%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/dordingu/public_html/hardkjarni/wp-content/plugins/gutenberg/build/block-library/
Upload File :
Create Path :
Current File : /home/dordingu/public_html/hardkjarni/wp-content/plugins/gutenberg/build/block-library/index.min.js.map

{"version":3,"file":"./build/block-library/index.min.js","mappings":"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IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,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","sources":["webpack://wp/./node_modules/classnames/dedupe.js","webpack://wp/./node_modules/classnames/index.js","webpack://wp/./node_modules/memize/index.js","webpack://wp/./node_modules/remove-accents/index.js","webpack://wp/./packages/block-library/build-module/utils/@wordpress/block-library/src/utils/is-block-metadata-experimental.js","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/compat get default export","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/external window [\"wp\",\"blocks\"]","webpack://wp/external window [\"wp\",\"element\"]","webpack://wp/external window [\"wp\",\"primitives\"]","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/archive.js","webpack://wp/./packages/block-library/build-module/utils/@wordpress/block-library/src/utils/init-block.js","webpack://wp/external window [\"wp\",\"components\"]","webpack://wp/external window [\"wp\",\"i18n\"]","webpack://wp/external window [\"wp\",\"blockEditor\"]","webpack://wp/external window [\"wp\",\"serverSideRender\"]","webpack://wp/./packages/block-library/build-module/archives/@wordpress/block-library/src/archives/index.js","webpack://wp/./packages/block-library/build-module/archives/@wordpress/block-library/src/archives/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/comment-author-avatar.js","webpack://wp/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://wp/external window [\"wp\",\"url\"]","webpack://wp/external window [\"wp\",\"coreData\"]","webpack://wp/external window [\"wp\",\"data\"]","webpack://wp/./packages/block-library/build-module/avatar/@wordpress/block-library/src/avatar/hooks.js","webpack://wp/./packages/block-library/build-module/avatar/@wordpress/block-library/src/avatar/user-control.js","webpack://wp/./packages/block-library/build-module/avatar/@wordpress/block-library/src/avatar/edit.js","webpack://wp/./packages/block-library/build-module/avatar/@wordpress/block-library/src/avatar/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/audio.js","webpack://wp/./packages/block-library/build-module/audio/@wordpress/block-library/src/audio/deprecated.js","webpack://wp/external window [\"wp\",\"blob\"]","webpack://wp/external window [\"wp\",\"notices\"]","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/constants.js","webpack://wp/external window \"lodash\"","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/util.js","webpack://wp/./packages/block-library/build-module/audio/@wordpress/block-library/src/audio/edit.js","webpack://wp/./packages/block-library/build-module/audio/@wordpress/block-library/src/audio/transforms.js","webpack://wp/./packages/block-library/build-module/audio/@wordpress/block-library/src/audio/index.js","webpack://wp/./packages/block-library/build-module/audio/@wordpress/block-library/src/audio/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/button.js","webpack://wp/external window [\"wp\",\"compose\"]","webpack://wp/./packages/block-library/build-module/utils/@wordpress/block-library/src/utils/clean-empty-object.js","webpack://wp/./packages/block-library/build-module/utils/@wordpress/block-library/src/utils/migrate-font-family.js","webpack://wp/./packages/block-library/build-module/button/@wordpress/block-library/src/button/deprecated.js","webpack://wp/external window [\"wp\",\"keycodes\"]","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/link.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/link-off.js","webpack://wp/./packages/block-library/build-module/button/@wordpress/block-library/src/button/edit.js","webpack://wp/./packages/block-library/build-module/button/@wordpress/block-library/src/button/index.js","webpack://wp/./packages/block-library/build-module/button/@wordpress/block-library/src/button/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/buttons.js","webpack://wp/./packages/block-library/build-module/buttons/@wordpress/block-library/src/buttons/deprecated.js","webpack://wp/external window [\"wp\",\"richText\"]","webpack://wp/./packages/block-library/build-module/buttons/@wordpress/block-library/src/buttons/transforms.js","webpack://wp/./packages/block-library/build-module/buttons/@wordpress/block-library/src/buttons/edit.js","webpack://wp/./packages/block-library/build-module/buttons/@wordpress/block-library/src/buttons/index.js","webpack://wp/./packages/block-library/build-module/buttons/@wordpress/block-library/src/buttons/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/calendar.js","webpack://wp/./packages/block-library/build-module/calendar/@wordpress/block-library/src/calendar/edit.js","webpack://wp/./packages/block-library/build-module/calendar/@wordpress/block-library/src/calendar/transforms.js","webpack://wp/./packages/block-library/build-module/calendar/@wordpress/block-library/src/calendar/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/category.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/pin.js","webpack://wp/./packages/block-library/build-module/categories/@wordpress/block-library/src/categories/index.js","webpack://wp/./packages/block-library/build-module/categories/@wordpress/block-library/src/categories/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/classic.js","webpack://wp/./packages/block-library/build-module/freeform/@wordpress/block-library/src/freeform/convert-to-blocks-button.js","webpack://wp/./packages/block-library/build-module/freeform/@wordpress/block-library/src/freeform/edit.js","webpack://wp/./packages/block-library/build-module/freeform/@wordpress/block-library/src/freeform/index.js","webpack://wp/./packages/block-library/build-module/freeform/@wordpress/block-library/src/freeform/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/code.js","webpack://wp/./packages/block-library/build-module/code/@wordpress/block-library/src/code/utils.js","webpack://wp/./packages/block-library/build-module/code/@wordpress/block-library/src/code/transforms.js","webpack://wp/./packages/block-library/build-module/code/@wordpress/block-library/src/code/index.js","webpack://wp/./packages/block-library/build-module/code/@wordpress/block-library/src/code/edit.js","webpack://wp/./packages/block-library/build-module/code/@wordpress/block-library/src/code/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/column.js","webpack://wp/./packages/block-library/build-module/column/@wordpress/block-library/src/column/deprecated.js","webpack://wp/./packages/block-library/build-module/column/@wordpress/block-library/src/column/index.js","webpack://wp/./packages/block-library/build-module/column/@wordpress/block-library/src/column/edit.js","webpack://wp/./packages/block-library/build-module/column/@wordpress/block-library/src/column/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/columns.js","webpack://wp/./packages/block-library/build-module/columns/@wordpress/block-library/src/columns/deprecated.js","webpack://wp/./packages/block-library/build-module/columns/@wordpress/block-library/src/columns/utils.js","webpack://wp/./packages/block-library/build-module/columns/@wordpress/block-library/src/columns/edit.js","webpack://wp/./packages/block-library/build-module/columns/@wordpress/block-library/src/columns/variations.js","webpack://wp/./packages/block-library/build-module/columns/@wordpress/block-library/src/columns/transforms.js","webpack://wp/./packages/block-library/build-module/columns/@wordpress/block-library/src/columns/index.js","webpack://wp/./packages/block-library/build-module/columns/@wordpress/block-library/src/columns/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-comments.js","webpack://wp/./packages/block-library/build-module/comments/@wordpress/block-library/src/comments/deprecated.js","webpack://wp/./packages/block-library/build-module/comments/edit/@wordpress/block-library/src/comments/edit/comments-inspector-controls.js","webpack://wp/./packages/block-library/build-module/post-comments-form/@wordpress/block-library/src/post-comments-form/form.js","webpack://wp/./packages/block-library/build-module/comments/edit/@wordpress/block-library/src/comments/edit/placeholder.js","webpack://wp/./packages/block-library/build-module/comments/edit/@wordpress/block-library/src/comments/edit/comments-legacy.js","webpack://wp/./packages/block-library/build-module/comments/edit/@wordpress/block-library/src/comments/edit/template.js","webpack://wp/./packages/block-library/build-module/comments/@wordpress/block-library/src/comments/index.js","webpack://wp/./packages/block-library/build-module/comments/edit/@wordpress/block-library/src/comments/edit/index.js","webpack://wp/./packages/block-library/build-module/comments/@wordpress/block-library/src/comments/save.js","webpack://wp/./packages/block-library/build-module/comment-author-avatar/@wordpress/block-library/src/comment-author-avatar/index.js","webpack://wp/./packages/block-library/build-module/comment-author-avatar/@wordpress/block-library/src/comment-author-avatar/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/comment-author-name.js","webpack://wp/./packages/block-library/build-module/comment-author-name/@wordpress/block-library/src/comment-author-name/deprecated.js","webpack://wp/./packages/block-library/build-module/comment-author-name/@wordpress/block-library/src/comment-author-name/index.js","webpack://wp/./packages/block-library/build-module/comment-author-name/@wordpress/block-library/src/comment-author-name/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/comment-content.js","webpack://wp/./packages/block-library/build-module/comment-content/@wordpress/block-library/src/comment-content/index.js","webpack://wp/./packages/block-library/build-module/comment-content/@wordpress/block-library/src/comment-content/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-date.js","webpack://wp/external window [\"wp\",\"date\"]","webpack://wp/./packages/block-library/build-module/comment-date/@wordpress/block-library/src/comment-date/deprecated.js","webpack://wp/./packages/block-library/build-module/comment-date/@wordpress/block-library/src/comment-date/index.js","webpack://wp/./packages/block-library/build-module/comment-date/@wordpress/block-library/src/comment-date/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/comment-edit-link.js","webpack://wp/./packages/block-library/build-module/comment-edit-link/@wordpress/block-library/src/comment-edit-link/index.js","webpack://wp/./packages/block-library/build-module/comment-edit-link/@wordpress/block-library/src/comment-edit-link/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/comment-reply-link.js","webpack://wp/./packages/block-library/build-module/comment-reply-link/@wordpress/block-library/src/comment-reply-link/index.js","webpack://wp/./packages/block-library/build-module/comment-reply-link/@wordpress/block-library/src/comment-reply-link/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/layout.js","webpack://wp/external window [\"wp\",\"apiFetch\"]","webpack://wp/./packages/block-library/build-module/comment-template/@wordpress/block-library/src/comment-template/hooks.js","webpack://wp/./packages/block-library/build-module/comment-template/@wordpress/block-library/src/comment-template/edit.js","webpack://wp/./packages/block-library/build-module/comment-template/@wordpress/block-library/src/comment-template/index.js","webpack://wp/./packages/block-library/build-module/comment-template/@wordpress/block-library/src/comment-template/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/query-pagination-previous.js","webpack://wp/./packages/block-library/build-module/comments-pagination-previous/@wordpress/block-library/src/comments-pagination-previous/edit.js","webpack://wp/./packages/block-library/build-module/comments-pagination-previous/@wordpress/block-library/src/comments-pagination-previous/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/query-pagination.js","webpack://wp/./packages/block-library/build-module/comments-pagination/@wordpress/block-library/src/comments-pagination/comments-pagination-arrow-controls.js","webpack://wp/./packages/block-library/build-module/comments-pagination/@wordpress/block-library/src/comments-pagination/edit.js","webpack://wp/./packages/block-library/build-module/comments-pagination/@wordpress/block-library/src/comments-pagination/index.js","webpack://wp/./packages/block-library/build-module/comments-pagination/@wordpress/block-library/src/comments-pagination/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/query-pagination-next.js","webpack://wp/./packages/block-library/build-module/comments-pagination-next/@wordpress/block-library/src/comments-pagination-next/edit.js","webpack://wp/./packages/block-library/build-module/comments-pagination-next/@wordpress/block-library/src/comments-pagination-next/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/query-pagination-numbers.js","webpack://wp/./packages/block-library/build-module/comments-pagination-numbers/@wordpress/block-library/src/comments-pagination-numbers/edit.js","webpack://wp/./packages/block-library/build-module/comments-pagination-numbers/@wordpress/block-library/src/comments-pagination-numbers/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/title.js","webpack://wp/./packages/block-library/build-module/heading/@wordpress/block-library/src/heading/heading-level-icon.js","webpack://wp/./packages/block-library/build-module/heading/@wordpress/block-library/src/heading/heading-level-dropdown.js","webpack://wp/./packages/block-library/build-module/comments-title/@wordpress/block-library/src/comments-title/deprecated.js","webpack://wp/./packages/block-library/build-module/comments-title/@wordpress/block-library/src/comments-title/index.js","webpack://wp/./packages/block-library/build-module/comments-title/@wordpress/block-library/src/comments-title/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/cover.js","webpack://wp/./packages/block-library/build-module/cover/@wordpress/block-library/src/cover/shared.js","webpack://wp/./packages/block-library/build-module/cover/@wordpress/block-library/src/cover/deprecated.js","webpack://wp/./node_modules/colord/index.mjs","webpack://wp/./node_modules/fast-average-color/dist/index.esm.js","webpack://wp/./packages/block-library/build-module/cover/edit/@wordpress/block-library/src/cover/edit/use-cover-is-dark.js","webpack://wp/./packages/block-library/build-module/cover/edit/@wordpress/block-library/src/cover/edit/inspector-controls.js","webpack://wp/./packages/block-library/build-module/cover/edit/@wordpress/block-library/src/cover/edit/block-controls.js","webpack://wp/./packages/block-library/build-module/cover/edit/@wordpress/block-library/src/cover/edit/cover-placeholder.js","webpack://wp/./packages/block-library/build-module/cover/edit/@wordpress/block-library/src/cover/edit/resizable-cover.js","webpack://wp/./packages/block-library/build-module/cover/edit/@wordpress/block-library/src/cover/edit/index.js","webpack://wp/./node_modules/colord/plugins/names.mjs","webpack://wp/./packages/block-library/build-module/cover/@wordpress/block-library/src/cover/transforms.js","webpack://wp/./packages/block-library/build-module/cover/@wordpress/block-library/src/cover/index.js","webpack://wp/./packages/block-library/build-module/cover/@wordpress/block-library/src/cover/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/pencil.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/embed-controls.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/icons.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/embed-loading.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/embed-placeholder.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/wp-embed-preview.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/embed-preview.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/transforms.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/variations.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/deprecated.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/index.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/edit.js","webpack://wp/./packages/block-library/build-module/embed/@wordpress/block-library/src/embed/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/file.js","webpack://wp/./packages/block-library/build-module/file/@wordpress/block-library/src/file/deprecated.js","webpack://wp/./packages/block-library/build-module/file/@wordpress/block-library/src/file/inspector.js","webpack://wp/./packages/block-library/build-module/file/@wordpress/block-library/src/file/utils.js","webpack://wp/./packages/block-library/build-module/file/@wordpress/block-library/src/file/edit.js","webpack://wp/./packages/block-library/build-module/file/@wordpress/block-library/src/file/transforms.js","webpack://wp/./packages/block-library/build-module/file/@wordpress/block-library/src/file/index.js","webpack://wp/./packages/block-library/build-module/file/@wordpress/block-library/src/file/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/gallery.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/constants.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/shared.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/deprecated.js","webpack://wp/external window [\"wp\",\"viewport\"]","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/shared-icon.js","webpack://wp/./packages/block-library/build-module/image/@wordpress/block-library/src/image/constants.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/utils.js","webpack://wp/./packages/block-library/build-module/image/@wordpress/block-library/src/image/utils.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/gallery.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/use-get-media.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/gap-styles.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/edit.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/use-get-new-images.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/use-image-sizes.js","webpack://wp/./packages/block-library/build-module/gallery/v1/@wordpress/block-library/src/gallery/v1/shared.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/image.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/chevron-left.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/chevron-right.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/close-small.js","webpack://wp/./packages/block-library/build-module/gallery/v1/@wordpress/block-library/src/gallery/v1/constants.js","webpack://wp/./packages/block-library/build-module/gallery/v1/@wordpress/block-library/src/gallery/v1/gallery-image.js","webpack://wp/./packages/block-library/build-module/gallery/v1/@wordpress/block-library/src/gallery/v1/gallery.js","webpack://wp/./packages/block-library/build-module/gallery/v1/@wordpress/block-library/src/gallery/v1/edit.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/edit-wrapper.js","webpack://wp/external window [\"wp\",\"hooks\"]","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/transforms.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/index.js","webpack://wp/./packages/block-library/build-module/gallery/@wordpress/block-library/src/gallery/save.js","webpack://wp/./packages/block-library/build-module/gallery/v1/@wordpress/block-library/src/gallery/v1/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/group.js","webpack://wp/./packages/block-library/build-module/group/@wordpress/block-library/src/group/deprecated.js","webpack://wp/./packages/block-library/build-module/group/@wordpress/block-library/src/group/edit.js","webpack://wp/./packages/block-library/build-module/group/@wordpress/block-library/src/group/transforms.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/row.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/stack.js","webpack://wp/./packages/block-library/build-module/group/@wordpress/block-library/src/group/variations.js","webpack://wp/./packages/block-library/build-module/group/@wordpress/block-library/src/group/index.js","webpack://wp/./packages/block-library/build-module/group/@wordpress/block-library/src/group/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/heading.js","webpack://wp/./packages/block-library/build-module/heading/@wordpress/block-library/src/heading/deprecated.js","webpack://wp/./packages/block-library/build-module/heading/@wordpress/block-library/src/heading/autogenerate-anchors.js","webpack://wp/./packages/block-library/build-module/heading/@wordpress/block-library/src/heading/transforms.js","webpack://wp/./packages/block-library/build-module/heading/@wordpress/block-library/src/heading/shared.js","webpack://wp/./packages/block-library/build-module/heading/@wordpress/block-library/src/heading/index.js","webpack://wp/./packages/block-library/build-module/heading/@wordpress/block-library/src/heading/edit.js","webpack://wp/./packages/block-library/build-module/heading/@wordpress/block-library/src/heading/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/home.js","webpack://wp/./packages/block-library/build-module/home-link/@wordpress/block-library/src/home-link/edit.js","webpack://wp/./packages/block-library/build-module/home-link/@wordpress/block-library/src/home-link/index.js","webpack://wp/./packages/block-library/build-module/home-link/@wordpress/block-library/src/home-link/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/html.js","webpack://wp/./packages/block-library/build-module/html/@wordpress/block-library/src/html/preview.js","webpack://wp/./packages/block-library/build-module/html/@wordpress/block-library/src/html/transforms.js","webpack://wp/./packages/block-library/build-module/html/@wordpress/block-library/src/html/index.js","webpack://wp/./packages/block-library/build-module/html/@wordpress/block-library/src/html/edit.js","webpack://wp/./packages/block-library/build-module/html/@wordpress/block-library/src/html/save.js","webpack://wp/./packages/block-library/build-module/image/@wordpress/block-library/src/image/deprecated.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/crop.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/upload.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/overlay-text.js","webpack://wp/./packages/block-library/build-module/image/@wordpress/block-library/src/image/use-client-width.js","webpack://wp/./packages/block-library/build-module/image/@wordpress/block-library/src/image/image.js","webpack://wp/./packages/block-library/build-module/image/@wordpress/block-library/src/image/edit.js","webpack://wp/./packages/block-library/build-module/image/@wordpress/block-library/src/image/transforms.js","webpack://wp/./packages/block-library/build-module/image/@wordpress/block-library/src/image/index.js","webpack://wp/./packages/block-library/build-module/image/@wordpress/block-library/src/image/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/comment.js","webpack://wp/./packages/block-library/build-module/latest-comments/@wordpress/block-library/src/latest-comments/index.js","webpack://wp/./packages/block-library/build-module/latest-comments/@wordpress/block-library/src/latest-comments/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-list.js","webpack://wp/./packages/block-library/build-module/latest-posts/@wordpress/block-library/src/latest-posts/deprecated.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/list.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/grid.js","webpack://wp/./packages/block-library/build-module/latest-posts/@wordpress/block-library/src/latest-posts/edit.js","webpack://wp/./packages/block-library/build-module/latest-posts/@wordpress/block-library/src/latest-posts/index.js","webpack://wp/./packages/block-library/build-module/latest-posts/@wordpress/block-library/src/latest-posts/constants.js","webpack://wp/./packages/block-library/build-module/list/@wordpress/block-library/src/list/utils.js","webpack://wp/./packages/block-library/build-module/list/@wordpress/block-library/src/list/deprecated.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/format-outdent-rtl.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/format-outdent.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/format-list-bullets-rtl.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/format-list-bullets.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/format-list-numbered-rtl.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/format-list-numbered.js","webpack://wp/external window [\"wp\",\"deprecated\"]","webpack://wp/./packages/block-library/build-module/list/@wordpress/block-library/src/list/ordered-list-settings.js","webpack://wp/./packages/block-library/build-module/list/@wordpress/block-library/src/list/tag-name.js","webpack://wp/./packages/block-library/build-module/list/@wordpress/block-library/src/list/edit.js","webpack://wp/./packages/block-library/build-module/list/@wordpress/block-library/src/list/transforms.js","webpack://wp/./packages/block-library/build-module/list/@wordpress/block-library/src/list/index.js","webpack://wp/./packages/block-library/build-module/list/@wordpress/block-library/src/list/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/list-item.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/format-indent-rtl.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/format-indent.js","webpack://wp/./packages/block-library/build-module/list-item/hooks/@wordpress/block-library/src/list-item/hooks/use-indent-list-item.js","webpack://wp/./packages/block-library/build-module/list-item/hooks/@wordpress/block-library/src/list-item/hooks/use-outdent-list-item.js","webpack://wp/./packages/block-library/build-module/list-item/hooks/@wordpress/block-library/src/list-item/hooks/use-copy.js","webpack://wp/./packages/block-library/build-module/list-item/hooks/@wordpress/block-library/src/list-item/hooks/use-merge.js","webpack://wp/./packages/block-library/build-module/list-item/@wordpress/block-library/src/list-item/utils.js","webpack://wp/./packages/block-library/build-module/list-item/@wordpress/block-library/src/list-item/edit.js","webpack://wp/./packages/block-library/build-module/list-item/@wordpress/block-library/src/list-item/index.js","webpack://wp/./packages/block-library/build-module/list-item/hooks/@wordpress/block-library/src/list-item/hooks/use-enter.js","webpack://wp/./packages/block-library/build-module/list-item/hooks/@wordpress/block-library/src/list-item/hooks/use-space.js","webpack://wp/./packages/block-library/build-module/list-item/hooks/@wordpress/block-library/src/list-item/hooks/use-split.js","webpack://wp/./packages/block-library/build-module/list-item/@wordpress/block-library/src/list-item/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/login.js","webpack://wp/./packages/block-library/build-module/loginout/@wordpress/block-library/src/loginout/index.js","webpack://wp/./packages/block-library/build-module/loginout/@wordpress/block-library/src/loginout/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/media-and-text.js","webpack://wp/./packages/block-library/build-module/media-text/@wordpress/block-library/src/media-text/constants.js","webpack://wp/./packages/block-library/build-module/media-text/@wordpress/block-library/src/media-text/deprecated.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/pull-left.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/pull-right.js","webpack://wp/./packages/block-library/build-module/media-text/@wordpress/block-library/src/media-text/media-container-icon.js","webpack://wp/./packages/block-library/build-module/media-text/@wordpress/block-library/src/media-text/media-container.js","webpack://wp/./packages/block-library/build-module/media-text/@wordpress/block-library/src/media-text/edit.js","webpack://wp/./packages/block-library/build-module/media-text/@wordpress/block-library/src/media-text/save.js","webpack://wp/./packages/block-library/build-module/media-text/@wordpress/block-library/src/media-text/transforms.js","webpack://wp/./packages/block-library/build-module/media-text/@wordpress/block-library/src/media-text/index.js","webpack://wp/external window [\"wp\",\"dom\"]","webpack://wp/./packages/block-library/build-module/missing/@wordpress/block-library/src/missing/edit.js","webpack://wp/./packages/block-library/build-module/missing/@wordpress/block-library/src/missing/index.js","webpack://wp/./packages/block-library/build-module/missing/@wordpress/block-library/src/missing/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/more.js","webpack://wp/./packages/block-library/build-module/more/@wordpress/block-library/src/more/edit.js","webpack://wp/./packages/block-library/build-module/more/@wordpress/block-library/src/more/transforms.js","webpack://wp/./packages/block-library/build-module/more/@wordpress/block-library/src/more/index.js","webpack://wp/./packages/block-library/build-module/more/@wordpress/block-library/src/more/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/navigation.js","webpack://wp/external window [\"wp\",\"a11y\"]","webpack://wp/./packages/icons/build-module/icon/@wordpress/icons/src/icon/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/close.js","webpack://wp/./packages/block-library/build-module/navigation/@wordpress/block-library/src/navigation/use-navigation-menu.js","webpack://wp/./packages/block-library/build-module/navigation/@wordpress/block-library/src/navigation/use-navigation-entities.js","webpack://wp/./packages/block-library/build-module/navigation/edit/placeholder/@wordpress/block-library/src/navigation/edit/placeholder/placeholder-preview.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/chevron-up.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/chevron-down.js","webpack://wp/external window [\"wp\",\"htmlEntities\"]","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/navigation-menu-selector.js","webpack://wp/./packages/block-library/build-module/navigation/edit/placeholder/@wordpress/block-library/src/navigation/edit/placeholder/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/menu.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/overlay-menu-icon.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/responsive-wrapper.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/inner-blocks.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/navigation-menu-name-control.js","webpack://wp/./packages/block-library/build-module/template-part/edit/utils/@wordpress/block-library/src/template-part/edit/utils/create-template-part-id.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/use-generate-default-navigation-title.js","webpack://wp/./packages/block-library/build-module/navigation/@wordpress/block-library/src/navigation/use-template-part-area-label.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/use-create-navigation-menu.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/unsaved-inner-blocks.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/navigation-menu-delete-control.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/use-navigation-notice.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/overlay-menu-preview.js","webpack://wp/./packages/block-library/build-module/navigation/@wordpress/block-library/src/navigation/menu-items-to-blocks.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/use-convert-classic-menu-to-block-menu.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/use-inner-blocks.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/utils.js","webpack://wp/./packages/block-library/build-module/navigation/edit/@wordpress/block-library/src/navigation/edit/index.js","webpack://wp/./packages/block-library/build-module/navigation/@wordpress/block-library/src/navigation/deprecated.js","webpack://wp/./packages/block-library/build-module/navigation/@wordpress/block-library/src/navigation/index.js","webpack://wp/./packages/block-library/build-module/navigation/@wordpress/block-library/src/navigation/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/custom-link.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/add-submenu.js","webpack://wp/./packages/block-library/build-module/navigation-link/@wordpress/block-library/src/navigation-link/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-content.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/page.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/tag.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/custom-post-type.js","webpack://wp/./packages/block-library/build-module/navigation-link/@wordpress/block-library/src/navigation-link/hooks.js","webpack://wp/./packages/block-library/build-module/navigation-link/@wordpress/block-library/src/navigation-link/transforms.js","webpack://wp/./packages/block-library/build-module/navigation-link/@wordpress/block-library/src/navigation-link/index.js","webpack://wp/./packages/block-library/build-module/navigation-link/@wordpress/block-library/src/navigation-link/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/remove-submenu.js","webpack://wp/./packages/block-library/build-module/navigation-submenu/@wordpress/block-library/src/navigation-submenu/icons.js","webpack://wp/./packages/block-library/build-module/navigation-submenu/@wordpress/block-library/src/navigation-submenu/edit.js","webpack://wp/./packages/block-library/build-module/navigation-submenu/@wordpress/block-library/src/navigation-submenu/transforms.js","webpack://wp/./packages/block-library/build-module/navigation-submenu/@wordpress/block-library/src/navigation-submenu/index.js","webpack://wp/./packages/block-library/build-module/navigation-submenu/@wordpress/block-library/src/navigation-submenu/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/page-break.js","webpack://wp/./packages/block-library/build-module/nextpage/@wordpress/block-library/src/nextpage/transforms.js","webpack://wp/./packages/block-library/build-module/nextpage/@wordpress/block-library/src/nextpage/index.js","webpack://wp/./packages/block-library/build-module/nextpage/@wordpress/block-library/src/nextpage/edit.js","webpack://wp/./packages/block-library/build-module/nextpage/@wordpress/block-library/src/nextpage/save.js","webpack://wp/./packages/block-library/build-module/pattern/@wordpress/block-library/src/pattern/index.js","webpack://wp/./packages/block-library/build-module/pattern/@wordpress/block-library/src/pattern/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/pages.js","webpack://wp/./packages/block-library/build-module/page-list/@wordpress/block-library/src/page-list/convert-to-links-modal.js","webpack://wp/./packages/block-library/build-module/navigation-link/@wordpress/block-library/src/navigation-link/icons.js","webpack://wp/./packages/block-library/build-module/page-list/@wordpress/block-library/src/page-list/edit.js","webpack://wp/./packages/block-library/build-module/page-list/@wordpress/block-library/src/page-list/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/paragraph.js","webpack://wp/./packages/block-library/build-module/paragraph/@wordpress/block-library/src/paragraph/deprecated.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/format-ltr.js","webpack://wp/./packages/block-library/build-module/paragraph/@wordpress/block-library/src/paragraph/use-enter.js","webpack://wp/./packages/block-library/build-module/paragraph/@wordpress/block-library/src/paragraph/drop-zone.js","webpack://wp/./packages/block-library/build-module/paragraph/@wordpress/block-library/src/paragraph/edit.js","webpack://wp/./packages/block-library/build-module/paragraph/@wordpress/block-library/src/paragraph/transforms.js","webpack://wp/./packages/block-library/build-module/paragraph/@wordpress/block-library/src/paragraph/index.js","webpack://wp/./packages/block-library/build-module/paragraph/@wordpress/block-library/src/paragraph/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-author.js","webpack://wp/./packages/block-library/build-module/post-author/@wordpress/block-library/src/post-author/index.js","webpack://wp/./packages/block-library/build-module/post-author/@wordpress/block-library/src/post-author/edit.js","webpack://wp/./packages/block-library/build-module/post-author-name/@wordpress/block-library/src/post-author-name/transforms.js","webpack://wp/./packages/block-library/build-module/post-author-name/@wordpress/block-library/src/post-author-name/index.js","webpack://wp/./packages/block-library/build-module/post-author-name/@wordpress/block-library/src/post-author-name/edit.js","webpack://wp/./packages/block-library/build-module/post-author-biography/@wordpress/block-library/src/post-author-biography/index.js","webpack://wp/./packages/block-library/build-module/post-author-biography/@wordpress/block-library/src/post-author-biography/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/block-default.js","webpack://wp/./packages/block-library/build-module/post-comment/@wordpress/block-library/src/post-comment/edit.js","webpack://wp/./packages/block-library/build-module/post-comment/@wordpress/block-library/src/post-comment/index.js","webpack://wp/./packages/block-library/build-module/post-comment/@wordpress/block-library/src/post-comment/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-comments-count.js","webpack://wp/./packages/block-library/build-module/post-comments-count/@wordpress/block-library/src/post-comments-count/index.js","webpack://wp/./packages/block-library/build-module/post-comments-count/@wordpress/block-library/src/post-comments-count/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-comments-form.js","webpack://wp/./packages/block-library/build-module/post-comments-form/@wordpress/block-library/src/post-comments-form/index.js","webpack://wp/./packages/block-library/build-module/post-comments-form/@wordpress/block-library/src/post-comments-form/edit.js","webpack://wp/./packages/block-library/build-module/post-comments-link/@wordpress/block-library/src/post-comments-link/index.js","webpack://wp/./packages/block-library/build-module/post-comments-link/@wordpress/block-library/src/post-comments-link/edit.js","webpack://wp/./packages/block-library/build-module/utils/@wordpress/block-library/src/utils/hooks.js","webpack://wp/./packages/block-library/build-module/post-content/@wordpress/block-library/src/post-content/edit.js","webpack://wp/./packages/block-library/build-module/post-content/@wordpress/block-library/src/post-content/index.js","webpack://wp/./packages/block-library/build-module/post-date/@wordpress/block-library/src/post-date/edit.js","webpack://wp/./packages/block-library/build-module/post-date/@wordpress/block-library/src/post-date/deprecated.js","webpack://wp/./packages/block-library/build-module/post-date/@wordpress/block-library/src/post-date/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-excerpt.js","webpack://wp/./packages/block-library/build-module/post-excerpt/@wordpress/block-library/src/post-excerpt/transforms.js","webpack://wp/./packages/block-library/build-module/post-excerpt/@wordpress/block-library/src/post-excerpt/index.js","webpack://wp/./packages/block-library/build-module/post-excerpt/@wordpress/block-library/src/post-excerpt/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-featured-image.js","webpack://wp/./packages/block-library/build-module/post-featured-image/@wordpress/block-library/src/post-featured-image/dimension-controls.js","webpack://wp/./packages/block-library/build-module/post-featured-image/@wordpress/block-library/src/post-featured-image/overlay.js","webpack://wp/./packages/block-library/build-module/post-featured-image/@wordpress/block-library/src/post-featured-image/utils.js","webpack://wp/./packages/block-library/build-module/post-featured-image/@wordpress/block-library/src/post-featured-image/edit.js","webpack://wp/./packages/block-library/build-module/post-featured-image/@wordpress/block-library/src/post-featured-image/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/next.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/previous.js","webpack://wp/./packages/block-library/build-module/post-navigation-link/@wordpress/block-library/src/post-navigation-link/variations.js","webpack://wp/./packages/block-library/build-module/post-navigation-link/@wordpress/block-library/src/post-navigation-link/index.js","webpack://wp/./packages/block-library/build-module/post-navigation-link/@wordpress/block-library/src/post-navigation-link/edit.js","webpack://wp/./packages/block-library/build-module/post-template/@wordpress/block-library/src/post-template/edit.js","webpack://wp/./packages/block-library/build-module/post-template/@wordpress/block-library/src/post-template/index.js","webpack://wp/./packages/block-library/build-module/post-template/@wordpress/block-library/src/post-template/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-categories.js","webpack://wp/./packages/block-library/build-module/post-terms/@wordpress/block-library/src/post-terms/edit.js","webpack://wp/./packages/block-library/build-module/post-terms/@wordpress/block-library/src/post-terms/hooks.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/post-terms.js","webpack://wp/./packages/block-library/build-module/post-terms/@wordpress/block-library/src/post-terms/index.js","webpack://wp/./packages/block-library/build-module/post-terms/@wordpress/block-library/src/post-terms/use-post-terms.js","webpack://wp/./packages/block-library/build-module/post-title/@wordpress/block-library/src/post-title/deprecated.js","webpack://wp/./packages/block-library/build-module/post-title/@wordpress/block-library/src/post-title/index.js","webpack://wp/./packages/block-library/build-module/post-title/@wordpress/block-library/src/post-title/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/preformatted.js","webpack://wp/./packages/block-library/build-module/preformatted/@wordpress/block-library/src/preformatted/transforms.js","webpack://wp/./packages/block-library/build-module/preformatted/@wordpress/block-library/src/preformatted/index.js","webpack://wp/./packages/block-library/build-module/preformatted/@wordpress/block-library/src/preformatted/edit.js","webpack://wp/./packages/block-library/build-module/preformatted/@wordpress/block-library/src/preformatted/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/pullquote.js","webpack://wp/./packages/block-library/build-module/pullquote/@wordpress/block-library/src/pullquote/shared.js","webpack://wp/./packages/block-library/build-module/pullquote/@wordpress/block-library/src/pullquote/deprecated.js","webpack://wp/./packages/block-library/build-module/pullquote/@wordpress/block-library/src/pullquote/edit.js","webpack://wp/./packages/block-library/build-module/pullquote/@wordpress/block-library/src/pullquote/transforms.js","webpack://wp/./packages/block-library/build-module/pullquote/@wordpress/block-library/src/pullquote/index.js","webpack://wp/./packages/block-library/build-module/pullquote/@wordpress/block-library/src/pullquote/figure.js","webpack://wp/./packages/block-library/build-module/pullquote/@wordpress/block-library/src/pullquote/blockquote.js","webpack://wp/./packages/block-library/build-module/pullquote/@wordpress/block-library/src/pullquote/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/loop.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/settings.js","webpack://wp/./packages/block-library/build-module/query/edit/@wordpress/block-library/src/query/edit/query-toolbar.js","webpack://wp/./packages/block-library/build-module/query/edit/inspector-controls/@wordpress/block-library/src/query/edit/inspector-controls/order-control.js","webpack://wp/./packages/block-library/build-module/query/@wordpress/block-library/src/query/utils.js","webpack://wp/./packages/block-library/build-module/query/edit/inspector-controls/@wordpress/block-library/src/query/edit/inspector-controls/author-control.js","webpack://wp/./packages/block-library/build-module/query/edit/inspector-controls/@wordpress/block-library/src/query/edit/inspector-controls/parent-control.js","webpack://wp/./packages/block-library/build-module/query/edit/inspector-controls/@wordpress/block-library/src/query/edit/inspector-controls/taxonomy-controls.js","webpack://wp/./packages/block-library/build-module/query/@wordpress/block-library/src/query/constants.js","webpack://wp/./packages/block-library/build-module/query/edit/inspector-controls/@wordpress/block-library/src/query/edit/inspector-controls/sticky-control.js","webpack://wp/./packages/block-library/build-module/query/edit/inspector-controls/@wordpress/block-library/src/query/edit/inspector-controls/index.js","webpack://wp/./packages/block-library/build-module/query/edit/@wordpress/block-library/src/query/edit/query-content.js","webpack://wp/./packages/block-library/build-module/query/edit/@wordpress/block-library/src/query/edit/query-placeholder.js","webpack://wp/./packages/block-library/build-module/query/edit/@wordpress/block-library/src/query/edit/index.js","webpack://wp/./packages/block-library/build-module/query/@wordpress/block-library/src/query/icons.js","webpack://wp/./packages/block-library/build-module/query/@wordpress/block-library/src/query/variations.js","webpack://wp/./packages/block-library/build-module/query/@wordpress/block-library/src/query/deprecated.js","webpack://wp/./packages/block-library/build-module/query/@wordpress/block-library/src/query/hooks.js","webpack://wp/./packages/block-library/build-module/query/@wordpress/block-library/src/query/index.js","webpack://wp/./packages/block-library/build-module/query/@wordpress/block-library/src/query/save.js","webpack://wp/./packages/block-library/build-module/query-no-results/@wordpress/block-library/src/query-no-results/edit.js","webpack://wp/./packages/block-library/build-module/query-no-results/@wordpress/block-library/src/query-no-results/index.js","webpack://wp/./packages/block-library/build-module/query-no-results/@wordpress/block-library/src/query-no-results/save.js","webpack://wp/./packages/block-library/build-module/query-pagination/@wordpress/block-library/src/query-pagination/query-pagination-arrow-controls.js","webpack://wp/./packages/block-library/build-module/query-pagination/@wordpress/block-library/src/query-pagination/edit.js","webpack://wp/./packages/block-library/build-module/query-pagination/@wordpress/block-library/src/query-pagination/deprecated.js","webpack://wp/./packages/block-library/build-module/query-pagination/@wordpress/block-library/src/query-pagination/index.js","webpack://wp/./packages/block-library/build-module/query-pagination/@wordpress/block-library/src/query-pagination/save.js","webpack://wp/./packages/block-library/build-module/query-pagination-next/@wordpress/block-library/src/query-pagination-next/edit.js","webpack://wp/./packages/block-library/build-module/query-pagination-next/@wordpress/block-library/src/query-pagination-next/index.js","webpack://wp/./packages/block-library/build-module/query-pagination-numbers/@wordpress/block-library/src/query-pagination-numbers/edit.js","webpack://wp/./packages/block-library/build-module/query-pagination-numbers/@wordpress/block-library/src/query-pagination-numbers/index.js","webpack://wp/./packages/block-library/build-module/query-pagination-previous/@wordpress/block-library/src/query-pagination-previous/edit.js","webpack://wp/./packages/block-library/build-module/query-pagination-previous/@wordpress/block-library/src/query-pagination-previous/index.js","webpack://wp/./packages/block-library/build-module/query-title/@wordpress/block-library/src/query-title/edit.js","webpack://wp/./packages/block-library/build-module/query-title/@wordpress/block-library/src/query-title/variations.js","webpack://wp/./packages/block-library/build-module/query-title/@wordpress/block-library/src/query-title/deprecated.js","webpack://wp/./packages/block-library/build-module/query-title/@wordpress/block-library/src/query-title/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/quote.js","webpack://wp/./packages/block-library/build-module/quote/@wordpress/block-library/src/quote/deprecated.js","webpack://wp/./packages/block-library/build-module/quote/@wordpress/block-library/src/quote/edit.js","webpack://wp/./packages/block-library/build-module/quote/@wordpress/block-library/src/quote/transforms.js","webpack://wp/./packages/block-library/build-module/quote/@wordpress/block-library/src/quote/index.js","webpack://wp/./packages/block-library/build-module/quote/@wordpress/block-library/src/quote/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/symbol.js","webpack://wp/external window [\"wp\",\"reusableBlocks\"]","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/ungroup.js","webpack://wp/./packages/block-library/build-module/block/@wordpress/block-library/src/block/index.js","webpack://wp/./packages/block-library/build-module/block/@wordpress/block-library/src/block/edit.js","webpack://wp/./packages/block-library/build-module/read-more/@wordpress/block-library/src/read-more/index.js","webpack://wp/./packages/block-library/build-module/read-more/@wordpress/block-library/src/read-more/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/rss.js","webpack://wp/./packages/block-library/build-module/rss/@wordpress/block-library/src/rss/index.js","webpack://wp/./packages/block-library/build-module/rss/@wordpress/block-library/src/rss/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/search.js","webpack://wp/./packages/block-library/build-module/search/@wordpress/block-library/src/search/icons.js","webpack://wp/./packages/block-library/build-module/search/@wordpress/block-library/src/search/variations.js","webpack://wp/./packages/block-library/build-module/search/@wordpress/block-library/src/search/index.js","webpack://wp/./packages/block-library/build-module/search/@wordpress/block-library/src/search/edit.js","webpack://wp/./packages/block-library/build-module/search/@wordpress/block-library/src/search/utils.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/separator.js","webpack://wp/./packages/block-library/build-module/separator/@wordpress/block-library/src/separator/transforms.js","webpack://wp/./packages/block-library/build-module/separator/@wordpress/block-library/src/separator/deprecated.js","webpack://wp/./packages/block-library/build-module/separator/@wordpress/block-library/src/separator/index.js","webpack://wp/./packages/block-library/build-module/separator/@wordpress/block-library/src/separator/edit.js","webpack://wp/./packages/block-library/build-module/separator/@wordpress/block-library/src/separator/use-deprecated-opacity.js","webpack://wp/./packages/block-library/build-module/separator/@wordpress/block-library/src/separator/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/shortcode.js","webpack://wp/external window [\"wp\",\"autop\"]","webpack://wp/./packages/block-library/build-module/shortcode/@wordpress/block-library/src/shortcode/transforms.js","webpack://wp/./packages/block-library/build-module/shortcode/@wordpress/block-library/src/shortcode/index.js","webpack://wp/./packages/block-library/build-module/shortcode/@wordpress/block-library/src/shortcode/edit.js","webpack://wp/./packages/block-library/build-module/shortcode/@wordpress/block-library/src/shortcode/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/site-logo.js","webpack://wp/./packages/block-library/build-module/site-logo/@wordpress/block-library/src/site-logo/edit.js","webpack://wp/./packages/block-library/build-module/site-logo/@wordpress/block-library/src/site-logo/transforms.js","webpack://wp/./packages/block-library/build-module/site-logo/@wordpress/block-library/src/site-logo/index.js","webpack://wp/./packages/block-library/build-module/site-tagline/@wordpress/block-library/src/site-tagline/icon.js","webpack://wp/./packages/block-library/build-module/site-tagline/@wordpress/block-library/src/site-tagline/deprecated.js","webpack://wp/./packages/block-library/build-module/site-tagline/@wordpress/block-library/src/site-tagline/index.js","webpack://wp/./packages/block-library/build-module/site-tagline/@wordpress/block-library/src/site-tagline/edit.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/map-marker.js","webpack://wp/./packages/block-library/build-module/site-title/edit/@wordpress/block-library/src/site-title/edit/level-icon.js","webpack://wp/./packages/block-library/build-module/site-title/edit/@wordpress/block-library/src/site-title/edit/level-toolbar.js","webpack://wp/./packages/block-library/build-module/site-title/@wordpress/block-library/src/site-title/deprecated.js","webpack://wp/./packages/block-library/build-module/site-title/@wordpress/block-library/src/site-title/transforms.js","webpack://wp/./packages/block-library/build-module/site-title/@wordpress/block-library/src/site-title/index.js","webpack://wp/./packages/block-library/build-module/site-title/edit/@wordpress/block-library/src/site-title/edit/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/share.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/keyboard-return.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/chain.js","webpack://wp/./packages/block-library/build-module/social-link/@wordpress/block-library/src/social-link/variations.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/wordpress.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/fivehundredpx.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/amazon.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/bandcamp.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/behance.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/codepen.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/deviantart.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/dribbble.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/dropbox.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/etsy.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/facebook.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/feed.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/flickr.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/foursquare.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/goodreads.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/google.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/github.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/instagram.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/lastfm.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/linkedin.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/mail.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/mastodon.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/meetup.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/medium.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/patreon.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/pinterest.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/pocket.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/reddit.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/skype.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/snapchat.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/soundcloud.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/spotify.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/telegram.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/tiktok.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/tumblr.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/twitch.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/twitter.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/vimeo.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/vk.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/whatsapp.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/yelp.js","webpack://wp/./packages/block-library/build-module/social-link/icons/@wordpress/block-library/src/social-link/icons/youtube.js","webpack://wp/./packages/block-library/build-module/social-link/@wordpress/block-library/src/social-link/edit.js","webpack://wp/./packages/block-library/build-module/social-link/@wordpress/block-library/src/social-link/index.js","webpack://wp/./packages/block-library/build-module/social-link/@wordpress/block-library/src/social-link/social-list.js","webpack://wp/./packages/block-library/build-module/social-links/@wordpress/block-library/src/social-links/deprecated.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/check.js","webpack://wp/./packages/block-library/build-module/social-links/@wordpress/block-library/src/social-links/edit.js","webpack://wp/./packages/block-library/build-module/social-links/@wordpress/block-library/src/social-links/index.js","webpack://wp/./packages/block-library/build-module/social-links/@wordpress/block-library/src/social-links/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/resize-corner-n-e.js","webpack://wp/./packages/block-library/build-module/spacer/@wordpress/block-library/src/spacer/deprecated.js","webpack://wp/./packages/block-library/build-module/spacer/@wordpress/block-library/src/spacer/controls.js","webpack://wp/./packages/block-library/build-module/spacer/@wordpress/block-library/src/spacer/constants.js","webpack://wp/./packages/block-library/build-module/spacer/@wordpress/block-library/src/spacer/edit.js","webpack://wp/./packages/block-library/build-module/spacer/@wordpress/block-library/src/spacer/index.js","webpack://wp/./packages/block-library/build-module/spacer/@wordpress/block-library/src/spacer/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/block-table.js","webpack://wp/./packages/block-library/build-module/table/@wordpress/block-library/src/table/deprecated.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/align-left.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/align-center.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/align-right.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/table-row-before.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/table-row-after.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/table-row-delete.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/table-column-before.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/table-column-after.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/table-column-delete.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/table.js","webpack://wp/./packages/block-library/build-module/table/@wordpress/block-library/src/table/state.js","webpack://wp/./packages/block-library/build-module/table/@wordpress/block-library/src/table/edit.js","webpack://wp/./packages/block-library/build-module/table/@wordpress/block-library/src/table/transforms.js","webpack://wp/./packages/block-library/build-module/table/@wordpress/block-library/src/table/index.js","webpack://wp/./packages/block-library/build-module/table/@wordpress/block-library/src/table/save.js","webpack://wp/./packages/block-library/build-module/table-of-contents/@wordpress/block-library/src/table-of-contents/icon.js","webpack://wp/./packages/block-library/build-module/table-of-contents/@wordpress/block-library/src/table-of-contents/list.tsx","webpack://wp/./packages/block-library/build-module/table-of-contents/@wordpress/block-library/src/table-of-contents/utils.ts","webpack://wp/./packages/block-library/build-module/table-of-contents/@wordpress/block-library/src/table-of-contents/index.js","webpack://wp/./packages/block-library/build-module/table-of-contents/@wordpress/block-library/src/table-of-contents/edit.js","webpack://wp/./packages/block-library/build-module/table-of-contents/@wordpress/block-library/src/table-of-contents/save.js","webpack://wp/./packages/block-library/build-module/tag-cloud/@wordpress/block-library/src/tag-cloud/transforms.js","webpack://wp/./packages/block-library/build-module/tag-cloud/@wordpress/block-library/src/tag-cloud/edit.js","webpack://wp/./packages/block-library/build-module/tag-cloud/@wordpress/block-library/src/tag-cloud/index.js","webpack://wp/./node_modules/tslib/tslib.es6.js","webpack://wp/./node_modules/lower-case/src/index.ts","webpack://wp/./node_modules/no-case/src/index.ts","webpack://wp/./node_modules/capital-case/src/index.ts","webpack://wp/./node_modules/upper-case-first/src/index.ts","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/symbol-filled.js","webpack://wp/./packages/block-library/build-module/template-part/edit/utils/@wordpress/block-library/src/template-part/edit/utils/hooks.js","webpack://wp/./packages/block-library/build-module/template-part/edit/@wordpress/block-library/src/template-part/edit/title-modal.js","webpack://wp/./packages/block-library/build-module/template-part/edit/@wordpress/block-library/src/template-part/edit/placeholder.js","webpack://wp/./packages/block-library/build-module/template-part/edit/utils/@wordpress/block-library/src/template-part/edit/utils/search.js","webpack://wp/./packages/block-library/build-module/template-part/edit/@wordpress/block-library/src/template-part/edit/selection-modal.js","webpack://wp/./packages/block-library/build-module/template-part/edit/@wordpress/block-library/src/template-part/edit/advanced-controls.js","webpack://wp/./packages/block-library/build-module/template-part/edit/@wordpress/block-library/src/template-part/edit/inner-blocks.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/header.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/footer.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/sidebar.js","webpack://wp/./packages/block-library/build-module/template-part/@wordpress/block-library/src/template-part/variations.js","webpack://wp/./packages/block-library/build-module/template-part/@wordpress/block-library/src/template-part/index.js","webpack://wp/./packages/block-library/build-module/template-part/edit/@wordpress/block-library/src/template-part/edit/index.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/term-description.js","webpack://wp/./packages/block-library/build-module/term-description/@wordpress/block-library/src/term-description/index.js","webpack://wp/./packages/block-library/build-module/term-description/@wordpress/block-library/src/term-description/edit.js","webpack://wp/./packages/block-library/build-module/text-columns/@wordpress/block-library/src/text-columns/transforms.js","webpack://wp/./packages/block-library/build-module/text-columns/@wordpress/block-library/src/text-columns/index.js","webpack://wp/./packages/block-library/build-module/text-columns/@wordpress/block-library/src/text-columns/edit.js","webpack://wp/./packages/block-library/build-module/text-columns/@wordpress/block-library/src/text-columns/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/verse.js","webpack://wp/./packages/block-library/build-module/verse/@wordpress/block-library/src/verse/deprecated.js","webpack://wp/./packages/block-library/build-module/verse/@wordpress/block-library/src/verse/transforms.js","webpack://wp/./packages/block-library/build-module/verse/@wordpress/block-library/src/verse/index.js","webpack://wp/./packages/block-library/build-module/verse/@wordpress/block-library/src/verse/edit.js","webpack://wp/./packages/block-library/build-module/verse/@wordpress/block-library/src/verse/save.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/video.js","webpack://wp/./packages/block-library/build-module/video/@wordpress/block-library/src/video/edit-common-settings.js","webpack://wp/./packages/icons/build-module/library/@wordpress/icons/src/library/media.js","webpack://wp/./packages/block-library/build-module/video/@wordpress/block-library/src/video/tracks-editor.js","webpack://wp/./packages/block-library/build-module/video/@wordpress/block-library/src/video/tracks.js","webpack://wp/./packages/block-library/build-module/video/@wordpress/block-library/src/video/edit.js","webpack://wp/./packages/block-library/build-module/video/@wordpress/block-library/src/video/transforms.js","webpack://wp/./packages/block-library/build-module/video/@wordpress/block-library/src/video/index.js","webpack://wp/./packages/block-library/build-module/video/@wordpress/block-library/src/video/save.js","webpack://wp/./packages/block-library/build-module/@wordpress/block-library/src/index.js"],"sourcesContent":["/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar classNames = (function () {\n\t\t// don't inherit from Object so we can skip hasOwnProperty check later\n\t\t// http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232\n\t\tfunction StorageObject() {}\n\t\tStorageObject.prototype = Object.create(null);\n\n\t\tfunction _parseArray (resultSet, array) {\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\t_parse(resultSet, array[i]);\n\t\t\t}\n\t\t}\n\n\t\tvar hasOwn = {}.hasOwnProperty;\n\n\t\tfunction _parseNumber (resultSet, num) {\n\t\t\tresultSet[num] = true;\n\t\t}\n\n\t\tfunction _parseObject (resultSet, object) {\n\t\t\tif (object.toString === Object.prototype.toString) {\n\t\t\t\tfor (var k in object) {\n\t\t\t\t\tif (hasOwn.call(object, k)) {\n\t\t\t\t\t\t// set value to false instead of deleting it to avoid changing object structure\n\t\t\t\t\t\t// https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions\n\t\t\t\t\t\tresultSet[k] = !!object[k];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresultSet[object.toString()] = true;\n\t\t\t}\n\t\t}\n\n\t\tvar SPACE = /\\s+/;\n\t\tfunction _parseString (resultSet, str) {\n\t\t\tvar array = str.split(SPACE);\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\tresultSet[array[i]] = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction _parse (resultSet, arg) {\n\t\t\tif (!arg) return;\n\t\t\tvar argType = typeof arg;\n\n\t\t\t// 'foo bar'\n\t\t\tif (argType === 'string') {\n\t\t\t\t_parseString(resultSet, arg);\n\n\t\t\t// ['foo', 'bar', ...]\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\t_parseArray(resultSet, arg);\n\n\t\t\t// { 'foo': true, ... }\n\t\t\t} else if (argType === 'object') {\n\t\t\t\t_parseObject(resultSet, arg);\n\n\t\t\t// '130'\n\t\t\t} else if (argType === 'number') {\n\t\t\t\t_parseNumber(resultSet, arg);\n\t\t\t}\n\t\t}\n\n\t\tfunction _classNames () {\n\t\t\t// don't leak arguments\n\t\t\t// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t\t\tvar len = arguments.length;\n\t\t\tvar args = Array(len);\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\targs[i] = arguments[i];\n\t\t\t}\n\n\t\t\tvar classSet = new StorageObject();\n\t\t\t_parseArray(classSet, args);\n\n\t\t\tvar list = [];\n\n\t\t\tfor (var k in classSet) {\n\t\t\t\tif (classSet[k]) {\n\t\t\t\t\tlist.push(k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list.join(' ');\n\t\t}\n\n\t\treturn _classNames;\n\t})();\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>}                   args   Function arguments for cache\n *                                               entry.\n * @property {*}                          val    Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {Function} F\n *\n * @param {F}             fn        Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {F & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize( fn, options ) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized( /* ...args */ ) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs, i;\n\n\t\tsearchCache: while ( node ) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif ( node.args.length !== arguments.length ) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( node.args[ i ] !== arguments[ i ] ) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif ( node !== head ) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif ( node === tail ) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ ( node.prev ).next = node.next;\n\t\t\t\tif ( node.next ) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ ( head ).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply( null, args ),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif ( head ) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif ( size === /** @type {MemizeOptions} */ ( options ).maxSize ) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ ( tail ).prev;\n\t\t\t/** @type {MemizeCacheNode} */ ( tail ).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function() {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\tif ( process.env.NODE_ENV === 'test' ) {\n\t\t// Cache is not exposed in the public API, but used in tests to ensure\n\t\t// expected list progression\n\t\tmemoized.getCache = function() {\n\t\t\treturn [ head, tail, size ];\n\t\t};\n\t}\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nmodule.exports = memize;\n","var characterMap = {\r\n\t\"À\": \"A\",\r\n\t\"Á\": \"A\",\r\n\t\"Â\": \"A\",\r\n\t\"Ã\": \"A\",\r\n\t\"Ä\": \"A\",\r\n\t\"Å\": \"A\",\r\n\t\"Ấ\": \"A\",\r\n\t\"Ắ\": \"A\",\r\n\t\"Ẳ\": \"A\",\r\n\t\"Ẵ\": \"A\",\r\n\t\"Ặ\": \"A\",\r\n\t\"Æ\": \"AE\",\r\n\t\"Ầ\": \"A\",\r\n\t\"Ằ\": \"A\",\r\n\t\"Ȃ\": \"A\",\r\n\t\"Ç\": \"C\",\r\n\t\"Ḉ\": \"C\",\r\n\t\"È\": \"E\",\r\n\t\"É\": \"E\",\r\n\t\"Ê\": \"E\",\r\n\t\"Ë\": \"E\",\r\n\t\"Ế\": \"E\",\r\n\t\"Ḗ\": \"E\",\r\n\t\"Ề\": \"E\",\r\n\t\"Ḕ\": \"E\",\r\n\t\"Ḝ\": \"E\",\r\n\t\"Ȇ\": \"E\",\r\n\t\"Ì\": \"I\",\r\n\t\"Í\": \"I\",\r\n\t\"Î\": \"I\",\r\n\t\"Ï\": \"I\",\r\n\t\"Ḯ\": \"I\",\r\n\t\"Ȋ\": \"I\",\r\n\t\"Ð\": \"D\",\r\n\t\"Ñ\": \"N\",\r\n\t\"Ò\": \"O\",\r\n\t\"Ó\": \"O\",\r\n\t\"Ô\": \"O\",\r\n\t\"Õ\": \"O\",\r\n\t\"Ö\": \"O\",\r\n\t\"Ø\": \"O\",\r\n\t\"Ố\": \"O\",\r\n\t\"Ṍ\": \"O\",\r\n\t\"Ṓ\": \"O\",\r\n\t\"Ȏ\": \"O\",\r\n\t\"Ù\": \"U\",\r\n\t\"Ú\": \"U\",\r\n\t\"Û\": \"U\",\r\n\t\"Ü\": \"U\",\r\n\t\"Ý\": \"Y\",\r\n\t\"à\": \"a\",\r\n\t\"á\": \"a\",\r\n\t\"â\": \"a\",\r\n\t\"ã\": \"a\",\r\n\t\"ä\": \"a\",\r\n\t\"å\": \"a\",\r\n\t\"ấ\": \"a\",\r\n\t\"ắ\": \"a\",\r\n\t\"ẳ\": \"a\",\r\n\t\"ẵ\": \"a\",\r\n\t\"ặ\": \"a\",\r\n\t\"æ\": \"ae\",\r\n\t\"ầ\": \"a\",\r\n\t\"ằ\": \"a\",\r\n\t\"ȃ\": \"a\",\r\n\t\"ç\": \"c\",\r\n\t\"ḉ\": \"c\",\r\n\t\"è\": \"e\",\r\n\t\"é\": \"e\",\r\n\t\"ê\": \"e\",\r\n\t\"ë\": \"e\",\r\n\t\"ế\": \"e\",\r\n\t\"ḗ\": \"e\",\r\n\t\"ề\": \"e\",\r\n\t\"ḕ\": \"e\",\r\n\t\"ḝ\": \"e\",\r\n\t\"ȇ\": \"e\",\r\n\t\"ì\": \"i\",\r\n\t\"í\": \"i\",\r\n\t\"î\": \"i\",\r\n\t\"ï\": \"i\",\r\n\t\"ḯ\": \"i\",\r\n\t\"ȋ\": \"i\",\r\n\t\"ð\": \"d\",\r\n\t\"ñ\": \"n\",\r\n\t\"ò\": \"o\",\r\n\t\"ó\": \"o\",\r\n\t\"ô\": \"o\",\r\n\t\"õ\": \"o\",\r\n\t\"ö\": \"o\",\r\n\t\"ø\": \"o\",\r\n\t\"ố\": \"o\",\r\n\t\"ṍ\": \"o\",\r\n\t\"ṓ\": \"o\",\r\n\t\"ȏ\": \"o\",\r\n\t\"ù\": \"u\",\r\n\t\"ú\": \"u\",\r\n\t\"û\": \"u\",\r\n\t\"ü\": \"u\",\r\n\t\"ý\": \"y\",\r\n\t\"ÿ\": \"y\",\r\n\t\"Ā\": \"A\",\r\n\t\"ā\": \"a\",\r\n\t\"Ă\": \"A\",\r\n\t\"ă\": \"a\",\r\n\t\"Ą\": \"A\",\r\n\t\"ą\": \"a\",\r\n\t\"Ć\": \"C\",\r\n\t\"ć\": \"c\",\r\n\t\"Ĉ\": \"C\",\r\n\t\"ĉ\": \"c\",\r\n\t\"Ċ\": \"C\",\r\n\t\"ċ\": \"c\",\r\n\t\"Č\": \"C\",\r\n\t\"č\": \"c\",\r\n\t\"C̆\": \"C\",\r\n\t\"c̆\": \"c\",\r\n\t\"Ď\": \"D\",\r\n\t\"ď\": \"d\",\r\n\t\"Đ\": \"D\",\r\n\t\"đ\": \"d\",\r\n\t\"Ē\": \"E\",\r\n\t\"ē\": \"e\",\r\n\t\"Ĕ\": \"E\",\r\n\t\"ĕ\": \"e\",\r\n\t\"Ė\": \"E\",\r\n\t\"ė\": \"e\",\r\n\t\"Ę\": \"E\",\r\n\t\"ę\": \"e\",\r\n\t\"Ě\": \"E\",\r\n\t\"ě\": \"e\",\r\n\t\"Ĝ\": \"G\",\r\n\t\"Ǵ\": \"G\",\r\n\t\"ĝ\": \"g\",\r\n\t\"ǵ\": \"g\",\r\n\t\"Ğ\": \"G\",\r\n\t\"ğ\": \"g\",\r\n\t\"Ġ\": \"G\",\r\n\t\"ġ\": \"g\",\r\n\t\"Ģ\": \"G\",\r\n\t\"ģ\": \"g\",\r\n\t\"Ĥ\": \"H\",\r\n\t\"ĥ\": \"h\",\r\n\t\"Ħ\": \"H\",\r\n\t\"ħ\": \"h\",\r\n\t\"Ḫ\": \"H\",\r\n\t\"ḫ\": \"h\",\r\n\t\"Ĩ\": \"I\",\r\n\t\"ĩ\": \"i\",\r\n\t\"Ī\": \"I\",\r\n\t\"ī\": \"i\",\r\n\t\"Ĭ\": \"I\",\r\n\t\"ĭ\": \"i\",\r\n\t\"Į\": \"I\",\r\n\t\"į\": \"i\",\r\n\t\"İ\": \"I\",\r\n\t\"ı\": \"i\",\r\n\t\"IJ\": \"IJ\",\r\n\t\"ij\": \"ij\",\r\n\t\"Ĵ\": \"J\",\r\n\t\"ĵ\": \"j\",\r\n\t\"Ķ\": \"K\",\r\n\t\"ķ\": \"k\",\r\n\t\"Ḱ\": \"K\",\r\n\t\"ḱ\": \"k\",\r\n\t\"K̆\": \"K\",\r\n\t\"k̆\": \"k\",\r\n\t\"Ĺ\": \"L\",\r\n\t\"ĺ\": \"l\",\r\n\t\"Ļ\": \"L\",\r\n\t\"ļ\": \"l\",\r\n\t\"Ľ\": \"L\",\r\n\t\"ľ\": \"l\",\r\n\t\"Ŀ\": \"L\",\r\n\t\"ŀ\": \"l\",\r\n\t\"Ł\": \"l\",\r\n\t\"ł\": \"l\",\r\n\t\"Ḿ\": \"M\",\r\n\t\"ḿ\": \"m\",\r\n\t\"M̆\": \"M\",\r\n\t\"m̆\": \"m\",\r\n\t\"Ń\": \"N\",\r\n\t\"ń\": \"n\",\r\n\t\"Ņ\": \"N\",\r\n\t\"ņ\": \"n\",\r\n\t\"Ň\": \"N\",\r\n\t\"ň\": \"n\",\r\n\t\"ʼn\": \"n\",\r\n\t\"N̆\": \"N\",\r\n\t\"n̆\": \"n\",\r\n\t\"Ō\": \"O\",\r\n\t\"ō\": \"o\",\r\n\t\"Ŏ\": \"O\",\r\n\t\"ŏ\": \"o\",\r\n\t\"Ő\": \"O\",\r\n\t\"ő\": \"o\",\r\n\t\"Œ\": \"OE\",\r\n\t\"œ\": \"oe\",\r\n\t\"P̆\": \"P\",\r\n\t\"p̆\": \"p\",\r\n\t\"Ŕ\": \"R\",\r\n\t\"ŕ\": \"r\",\r\n\t\"Ŗ\": \"R\",\r\n\t\"ŗ\": \"r\",\r\n\t\"Ř\": \"R\",\r\n\t\"ř\": \"r\",\r\n\t\"R̆\": \"R\",\r\n\t\"r̆\": \"r\",\r\n\t\"Ȓ\": \"R\",\r\n\t\"ȓ\": \"r\",\r\n\t\"Ś\": \"S\",\r\n\t\"ś\": \"s\",\r\n\t\"Ŝ\": \"S\",\r\n\t\"ŝ\": \"s\",\r\n\t\"Ş\": \"S\",\r\n\t\"Ș\": \"S\",\r\n\t\"ș\": \"s\",\r\n\t\"ş\": \"s\",\r\n\t\"Š\": \"S\",\r\n\t\"š\": \"s\",\r\n\t\"Ţ\": \"T\",\r\n\t\"ţ\": \"t\",\r\n\t\"ț\": \"t\",\r\n\t\"Ț\": \"T\",\r\n\t\"Ť\": \"T\",\r\n\t\"ť\": \"t\",\r\n\t\"Ŧ\": \"T\",\r\n\t\"ŧ\": \"t\",\r\n\t\"T̆\": \"T\",\r\n\t\"t̆\": \"t\",\r\n\t\"Ũ\": \"U\",\r\n\t\"ũ\": \"u\",\r\n\t\"Ū\": \"U\",\r\n\t\"ū\": \"u\",\r\n\t\"Ŭ\": \"U\",\r\n\t\"ŭ\": \"u\",\r\n\t\"Ů\": \"U\",\r\n\t\"ů\": \"u\",\r\n\t\"Ű\": \"U\",\r\n\t\"ű\": \"u\",\r\n\t\"Ų\": \"U\",\r\n\t\"ų\": \"u\",\r\n\t\"Ȗ\": \"U\",\r\n\t\"ȗ\": \"u\",\r\n\t\"V̆\": \"V\",\r\n\t\"v̆\": \"v\",\r\n\t\"Ŵ\": \"W\",\r\n\t\"ŵ\": \"w\",\r\n\t\"Ẃ\": \"W\",\r\n\t\"ẃ\": \"w\",\r\n\t\"X̆\": \"X\",\r\n\t\"x̆\": \"x\",\r\n\t\"Ŷ\": \"Y\",\r\n\t\"ŷ\": \"y\",\r\n\t\"Ÿ\": \"Y\",\r\n\t\"Y̆\": \"Y\",\r\n\t\"y̆\": \"y\",\r\n\t\"Ź\": \"Z\",\r\n\t\"ź\": \"z\",\r\n\t\"Ż\": \"Z\",\r\n\t\"ż\": \"z\",\r\n\t\"Ž\": \"Z\",\r\n\t\"ž\": \"z\",\r\n\t\"ſ\": \"s\",\r\n\t\"ƒ\": \"f\",\r\n\t\"Ơ\": \"O\",\r\n\t\"ơ\": \"o\",\r\n\t\"Ư\": \"U\",\r\n\t\"ư\": \"u\",\r\n\t\"Ǎ\": \"A\",\r\n\t\"ǎ\": \"a\",\r\n\t\"Ǐ\": \"I\",\r\n\t\"ǐ\": \"i\",\r\n\t\"Ǒ\": \"O\",\r\n\t\"ǒ\": \"o\",\r\n\t\"Ǔ\": \"U\",\r\n\t\"ǔ\": \"u\",\r\n\t\"Ǖ\": \"U\",\r\n\t\"ǖ\": \"u\",\r\n\t\"Ǘ\": \"U\",\r\n\t\"ǘ\": \"u\",\r\n\t\"Ǚ\": \"U\",\r\n\t\"ǚ\": \"u\",\r\n\t\"Ǜ\": \"U\",\r\n\t\"ǜ\": \"u\",\r\n\t\"Ứ\": \"U\",\r\n\t\"ứ\": \"u\",\r\n\t\"Ṹ\": \"U\",\r\n\t\"ṹ\": \"u\",\r\n\t\"Ǻ\": \"A\",\r\n\t\"ǻ\": \"a\",\r\n\t\"Ǽ\": \"AE\",\r\n\t\"ǽ\": \"ae\",\r\n\t\"Ǿ\": \"O\",\r\n\t\"ǿ\": \"o\",\r\n\t\"Þ\": \"TH\",\r\n\t\"þ\": \"th\",\r\n\t\"Ṕ\": \"P\",\r\n\t\"ṕ\": \"p\",\r\n\t\"Ṥ\": \"S\",\r\n\t\"ṥ\": \"s\",\r\n\t\"X́\": \"X\",\r\n\t\"x́\": \"x\",\r\n\t\"Ѓ\": \"Г\",\r\n\t\"ѓ\": \"г\",\r\n\t\"Ќ\": \"К\",\r\n\t\"ќ\": \"к\",\r\n\t\"A̋\": \"A\",\r\n\t\"a̋\": \"a\",\r\n\t\"E̋\": \"E\",\r\n\t\"e̋\": \"e\",\r\n\t\"I̋\": \"I\",\r\n\t\"i̋\": \"i\",\r\n\t\"Ǹ\": \"N\",\r\n\t\"ǹ\": \"n\",\r\n\t\"Ồ\": \"O\",\r\n\t\"ồ\": \"o\",\r\n\t\"Ṑ\": \"O\",\r\n\t\"ṑ\": \"o\",\r\n\t\"Ừ\": \"U\",\r\n\t\"ừ\": \"u\",\r\n\t\"Ẁ\": \"W\",\r\n\t\"ẁ\": \"w\",\r\n\t\"Ỳ\": \"Y\",\r\n\t\"ỳ\": \"y\",\r\n\t\"Ȁ\": \"A\",\r\n\t\"ȁ\": \"a\",\r\n\t\"Ȅ\": \"E\",\r\n\t\"ȅ\": \"e\",\r\n\t\"Ȉ\": \"I\",\r\n\t\"ȉ\": \"i\",\r\n\t\"Ȍ\": \"O\",\r\n\t\"ȍ\": \"o\",\r\n\t\"Ȑ\": \"R\",\r\n\t\"ȑ\": \"r\",\r\n\t\"Ȕ\": \"U\",\r\n\t\"ȕ\": \"u\",\r\n\t\"B̌\": \"B\",\r\n\t\"b̌\": \"b\",\r\n\t\"Č̣\": \"C\",\r\n\t\"č̣\": \"c\",\r\n\t\"Ê̌\": \"E\",\r\n\t\"ê̌\": \"e\",\r\n\t\"F̌\": \"F\",\r\n\t\"f̌\": \"f\",\r\n\t\"Ǧ\": \"G\",\r\n\t\"ǧ\": \"g\",\r\n\t\"Ȟ\": \"H\",\r\n\t\"ȟ\": \"h\",\r\n\t\"J̌\": \"J\",\r\n\t\"ǰ\": \"j\",\r\n\t\"Ǩ\": \"K\",\r\n\t\"ǩ\": \"k\",\r\n\t\"M̌\": \"M\",\r\n\t\"m̌\": \"m\",\r\n\t\"P̌\": \"P\",\r\n\t\"p̌\": \"p\",\r\n\t\"Q̌\": \"Q\",\r\n\t\"q̌\": \"q\",\r\n\t\"Ř̩\": \"R\",\r\n\t\"ř̩\": \"r\",\r\n\t\"Ṧ\": \"S\",\r\n\t\"ṧ\": \"s\",\r\n\t\"V̌\": \"V\",\r\n\t\"v̌\": \"v\",\r\n\t\"W̌\": \"W\",\r\n\t\"w̌\": \"w\",\r\n\t\"X̌\": \"X\",\r\n\t\"x̌\": \"x\",\r\n\t\"Y̌\": \"Y\",\r\n\t\"y̌\": \"y\",\r\n\t\"A̧\": \"A\",\r\n\t\"a̧\": \"a\",\r\n\t\"B̧\": \"B\",\r\n\t\"b̧\": \"b\",\r\n\t\"Ḑ\": \"D\",\r\n\t\"ḑ\": \"d\",\r\n\t\"Ȩ\": \"E\",\r\n\t\"ȩ\": \"e\",\r\n\t\"Ɛ̧\": \"E\",\r\n\t\"ɛ̧\": \"e\",\r\n\t\"Ḩ\": \"H\",\r\n\t\"ḩ\": \"h\",\r\n\t\"I̧\": \"I\",\r\n\t\"i̧\": \"i\",\r\n\t\"Ɨ̧\": \"I\",\r\n\t\"ɨ̧\": \"i\",\r\n\t\"M̧\": \"M\",\r\n\t\"m̧\": \"m\",\r\n\t\"O̧\": \"O\",\r\n\t\"o̧\": \"o\",\r\n\t\"Q̧\": \"Q\",\r\n\t\"q̧\": \"q\",\r\n\t\"U̧\": \"U\",\r\n\t\"u̧\": \"u\",\r\n\t\"X̧\": \"X\",\r\n\t\"x̧\": \"x\",\r\n\t\"Z̧\": \"Z\",\r\n\t\"z̧\": \"z\",\r\n};\r\n\r\nvar chars = Object.keys(characterMap).join('|');\r\nvar allAccents = new RegExp(chars, 'g');\r\nvar firstAccent = new RegExp(chars, '');\r\n\r\nvar removeAccents = function(string) {\t\r\n\treturn string.replace(allAccents, function(match) {\r\n\t\treturn characterMap[match];\r\n\t});\r\n};\r\n\r\nvar hasAccents = function(string) {\r\n\treturn !!string.match(firstAccent);\r\n};\r\n\r\nmodule.exports = removeAccents;\r\nmodule.exports.has = hasAccents;\r\nmodule.exports.remove = removeAccents;\r\n","/**\n * Checks if the block is experimental based on the metadata loaded\n * from block.json.\n *\n * This function is in a separate file and uses the older JS syntax so\n * that it can be imported in both:\n * – block-library/src/index.js\n * – block-library/src/babel-plugin.js\n *\n * @param {Object} metadata Parsed block.json metadata.\n * @return {boolean} Is the block experimental?\n */\nmodule.exports = function isBlockMetadataExperimental( metadata ) {\n\treturn (\n\t\tmetadata &&\n\t\t'__experimental' in metadata &&\n\t\tmetadata.__experimental !== false\n\t);\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blocks\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"element\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"primitives\"];","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst archive = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 6.2h-5.9l-.6-1.1c-.3-.7-1-1.1-1.8-1.1H5c-1.1 0-2 .9-2 2v11.8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V8.2c0-1.1-.9-2-2-2zm.5 11.6c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h5.8c.2 0 .4.1.4.3l1 2H19c.3 0 .5.2.5.5v9.5zM8 12.8h8v-1.5H8v1.5zm0 3h8v-1.5H8v1.5z\" />\n\t</SVG>\n);\n\nexport default archive;\n","/**\n * WordPress dependencies\n */\nimport { registerBlockType } from '@wordpress/blocks';\n\n/**\n * Function to register an individual block.\n *\n * @param {Object} block The block to be registered.\n *\n * @return {?WPBlockType} The block, if it has been successfully registered;\n *                        otherwise `undefined`.\n */\nexport default function initBlock( block ) {\n\tif ( ! block ) {\n\t\treturn;\n\t}\n\tconst { metadata, settings, name } = block;\n\treturn registerBlockType( { name, ...metadata }, settings );\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"components\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"i18n\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blockEditor\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"serverSideRender\"];","/**\n * WordPress dependencies\n */\nimport { archive 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;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {},\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tToggleControl,\n\tSelectControl,\n\tDisabled,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { InspectorControls, useBlockProps } from '@wordpress/block-editor';\nimport ServerSideRender from '@wordpress/server-side-render';\n\nexport default function ArchivesEdit( { attributes, setAttributes } ) {\n\tconst { showLabel, showPostCounts, displayAsDropdown, type } = attributes;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display as dropdown' ) }\n\t\t\t\t\t\tchecked={ displayAsDropdown }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayAsDropdown: ! displayAsDropdown,\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\t{ displayAsDropdown && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Show label' ) }\n\t\t\t\t\t\t\tchecked={ showLabel }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tshowLabel: ! showLabel,\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\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Show post counts' ) }\n\t\t\t\t\t\tchecked={ showPostCounts }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowPostCounts: ! showPostCounts,\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\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Group by:' ) }\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t{ label: __( 'Year' ), value: 'yearly' },\n\t\t\t\t\t\t\t{ label: __( 'Month' ), value: 'monthly' },\n\t\t\t\t\t\t\t{ label: __( 'Week' ), value: 'weekly' },\n\t\t\t\t\t\t\t{ label: __( 'Day' ), value: 'daily' },\n\t\t\t\t\t\t] }\n\t\t\t\t\t\tvalue={ type }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { type: value } )\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\t<div { ...useBlockProps() }>\n\t\t\t\t<Disabled>\n\t\t\t\t\t<ServerSideRender\n\t\t\t\t\t\tblock=\"core/archives\"\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t/>\n\t\t\t\t</Disabled>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst commentAuthorAvatar = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\td=\"M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t</SVG>\n);\n\nexport default commentAuthorAvatar;\n","export default function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"url\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"coreData\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"data\"];","/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore, useEntityProp } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\n\nfunction getAvatarSizes( sizes ) {\n\tconst minSize = sizes ? sizes[ 0 ] : 24;\n\tconst maxSize = sizes ? sizes[ sizes.length - 1 ] : 96;\n\tconst maxSizeBuffer = Math.floor( maxSize * 2.5 );\n\treturn {\n\t\tminSize,\n\t\tmaxSize: maxSizeBuffer,\n\t};\n}\n\nfunction useDefaultAvatar() {\n\tconst { avatarURL: defaultAvatarUrl } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { __experimentalDiscussionSettings } = getSettings();\n\t\treturn __experimentalDiscussionSettings;\n\t} );\n\treturn defaultAvatarUrl;\n}\n\nexport function useCommentAvatar( { commentId } ) {\n\tconst [ avatars ] = useEntityProp(\n\t\t'root',\n\t\t'comment',\n\t\t'author_avatar_urls',\n\t\tcommentId\n\t);\n\n\tconst [ authorName ] = useEntityProp(\n\t\t'root',\n\t\t'comment',\n\t\t'author_name',\n\t\tcommentId\n\t);\n\tconst avatarUrls = avatars ? Object.values( avatars ) : null;\n\tconst sizes = avatars ? Object.keys( avatars ) : null;\n\tconst { minSize, maxSize } = getAvatarSizes( sizes );\n\tconst defaultAvatar = useDefaultAvatar();\n\treturn {\n\t\tsrc: avatarUrls ? avatarUrls[ avatarUrls.length - 1 ] : defaultAvatar,\n\t\tminSize,\n\t\tmaxSize,\n\t\t// translators: %s is the Author name.\n\t\talt: authorName\n\t\t\t? // translators: %s is the Author name.\n\t\t\t  sprintf( __( '%s Avatar' ), authorName )\n\t\t\t: __( 'Default Avatar' ),\n\t};\n}\n\nexport function useUserAvatar( { userId, postId, postType } ) {\n\tconst { authorDetails } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, getUser } = select( coreStore );\n\t\t\tif ( userId ) {\n\t\t\t\treturn {\n\t\t\t\t\tauthorDetails: getUser( userId ),\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst _authorId = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t)?.author;\n\n\t\t\treturn {\n\t\t\t\tauthorDetails: _authorId ? getUser( _authorId ) : null,\n\t\t\t};\n\t\t},\n\t\t[ postType, postId, userId ]\n\t);\n\tconst avatarUrls = authorDetails?.avatar_urls\n\t\t? Object.values( authorDetails.avatar_urls )\n\t\t: null;\n\tconst sizes = authorDetails?.avatar_urls\n\t\t? Object.keys( authorDetails.avatar_urls )\n\t\t: null;\n\tconst { minSize, maxSize } = getAvatarSizes( sizes );\n\tconst defaultAvatar = useDefaultAvatar();\n\treturn {\n\t\tsrc: avatarUrls ? avatarUrls[ avatarUrls.length - 1 ] : defaultAvatar,\n\t\tminSize,\n\t\tmaxSize,\n\t\talt: authorDetails\n\t\t\t? // translators: %s is the Author name.\n\t\t\t  sprintf( __( '%s Avatar' ), authorDetails?.name )\n\t\t\t: __( 'Default Avatar' ),\n\t};\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ComboboxControl } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\n\nconst AUTHORS_QUERY = {\n\twho: 'authors',\n\tper_page: -1,\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nfunction UserControl( { value, onChange } ) {\n\tconst [ filteredAuthorsList, setFilteredAuthorsList ] = useState();\n\tconst authorsList = useSelect( ( select ) => {\n\t\tconst { getUsers } = select( coreStore );\n\t\treturn getUsers( AUTHORS_QUERY );\n\t}, [] );\n\tif ( ! authorsList ) {\n\t\treturn null;\n\t}\n\n\tconst options = authorsList.map( ( author ) => {\n\t\treturn {\n\t\t\tlabel: author.name,\n\t\t\tvalue: author.id,\n\t\t};\n\t} );\n\n\treturn (\n\t\t<ComboboxControl\n\t\t\tlabel={ __( 'User' ) }\n\t\t\thelp={ __(\n\t\t\t\t'Select the avatar user to display, if it is blank it will use the post/page author.'\n\t\t\t) }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\toptions={ filteredAuthorsList || options }\n\t\t\tonFilterValueChange={ ( inputValue ) =>\n\t\t\t\tsetFilteredAuthorsList(\n\t\t\t\t\toptions.filter( ( option ) =>\n\t\t\t\t\t\toption.label\n\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t.startsWith( inputValue.toLowerCase() )\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t}\n\t\t/>\n\t);\n}\n\nexport default UserControl;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\t__experimentalUseBorderProps as useBorderProps,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tRangeControl,\n\tResizableBox,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __, isRTL } from '@wordpress/i18n';\nimport { addQueryArgs, removeQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { useUserAvatar, useCommentAvatar } from './hooks';\nimport UserControl from './user-control';\n\nconst AvatarInspectorControls = ( {\n\tsetAttributes,\n\tavatar,\n\tattributes,\n\tselectUser,\n} ) => (\n\t<InspectorControls>\n\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t<RangeControl\n\t\t\t\tlabel={ __( 'Image size' ) }\n\t\t\t\tonChange={ ( newSize ) =>\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tsize: newSize,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t\tmin={ avatar.minSize }\n\t\t\t\tmax={ avatar.maxSize }\n\t\t\t\tinitialPosition={ attributes?.size }\n\t\t\t\tvalue={ attributes?.size }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Link to user profile' ) }\n\t\t\t\tonChange={ () =>\n\t\t\t\t\tsetAttributes( { isLink: ! attributes.isLink } )\n\t\t\t\t}\n\t\t\t\tchecked={ attributes.isLink }\n\t\t\t/>\n\t\t\t{ attributes.isLink && (\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tchecked={ attributes.linkTarget === '_blank' }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ selectUser && (\n\t\t\t\t<UserControl\n\t\t\t\t\tvalue={ attributes?.userId }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tuserId: value,\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</PanelBody>\n\t</InspectorControls>\n);\n\nconst ResizableAvatar = ( {\n\tsetAttributes,\n\tattributes,\n\tavatar,\n\tblockProps,\n\tisSelected,\n} ) => {\n\tconst borderProps = useBorderProps( attributes );\n\tconst doubledSizedSrc = addQueryArgs(\n\t\tremoveQueryArgs( avatar?.src, [ 's' ] ),\n\t\t{\n\t\t\ts: attributes?.size * 2,\n\t\t}\n\t);\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<ResizableBox\n\t\t\t\tsize={ {\n\t\t\t\t\twidth: attributes.size,\n\t\t\t\t\theight: attributes.size,\n\t\t\t\t} }\n\t\t\t\tshowHandle={ isSelected }\n\t\t\t\tonResizeStop={ ( event, direction, elt, delta ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tsize: parseInt(\n\t\t\t\t\t\t\tattributes.size + ( delta.height || delta.width ),\n\t\t\t\t\t\t\t10\n\t\t\t\t\t\t),\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tlockAspectRatio\n\t\t\t\tenable={ {\n\t\t\t\t\ttop: false,\n\t\t\t\t\tright: ! isRTL(),\n\t\t\t\t\tbottom: true,\n\t\t\t\t\tleft: isRTL(),\n\t\t\t\t} }\n\t\t\t\tminWidth={ avatar.minSize }\n\t\t\t\tmaxWidth={ avatar.maxSize }\n\t\t\t>\n\t\t\t\t<img\n\t\t\t\t\tsrc={ doubledSizedSrc }\n\t\t\t\t\talt={ avatar.alt }\n\t\t\t\t\t{ ...borderProps }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'avatar',\n\t\t\t\t\t\t'avatar-' + attributes.size,\n\t\t\t\t\t\t'photo',\n\t\t\t\t\t\t'wp-block-avatar__image',\n\t\t\t\t\t\tborderProps.className\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t...borderProps.style, // Border radius, width and style.\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ResizableBox>\n\t\t</div>\n\t);\n};\nconst CommentEdit = ( { attributes, context, setAttributes, isSelected } ) => {\n\tconst { commentId } = context;\n\tconst blockProps = useBlockProps();\n\tconst avatar = useCommentAvatar( { commentId } );\n\treturn (\n\t\t<>\n\t\t\t<AvatarInspectorControls\n\t\t\t\tavatar={ avatar }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tselectUser={ false }\n\t\t\t/>\n\t\t\t{ attributes.isLink ? (\n\t\t\t\t<a\n\t\t\t\t\thref=\"#avatar-pseudo-link\"\n\t\t\t\t\tclassName=\"wp-block-avatar__link\"\n\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t>\n\t\t\t\t\t<ResizableAvatar\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\tavatar={ avatar }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t/>\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\t<ResizableAvatar\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tavatar={ avatar }\n\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nconst UserEdit = ( { attributes, context, setAttributes, isSelected } ) => {\n\tconst { postId, postType } = context;\n\tconst avatar = useUserAvatar( {\n\t\tuserId: attributes?.userId,\n\t\tpostId,\n\t\tpostType,\n\t} );\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<>\n\t\t\t<AvatarInspectorControls\n\t\t\t\tselectUser={ true }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tavatar={ avatar }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t/>\n\t\t\t<div>\n\t\t\t\t{ attributes.isLink ? (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref=\"#avatar-pseudo-link\"\n\t\t\t\t\t\tclassName=\"wp-block-avatar__link\"\n\t\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ResizableAvatar\n\t\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\t\tavatar={ avatar }\n\t\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</a>\n\t\t\t\t) : (\n\t\t\t\t\t<ResizableAvatar\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\tavatar={ avatar }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n};\n\nexport default function Edit( props ) {\n\t// Don't show the Comment Edit controls if we have a comment ID set, or if we're in the Site Editor (where it is `null`).\n\tif ( props?.context?.commentId || props?.context?.commentId === null ) {\n\t\treturn <CommentEdit { ...props } />;\n\t}\n\treturn <UserEdit { ...props } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { commentAuthorAvatar 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","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst audio = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M17.7 4.3c-1.2 0-2.8 0-3.8 1-.6.6-.9 1.5-.9 2.6V14c-.6-.6-1.5-1-2.5-1C8.6 13 7 14.6 7 16.5S8.6 20 10.5 20c1.5 0 2.8-1 3.3-2.3.5-.8.7-1.8.7-2.5V7.9c0-.7.2-1.2.5-1.6.6-.6 1.8-.6 2.8-.6h.3V4.3h-.4z\" />\n\t</SVG>\n);\n\nexport default audio;\n","/**\n * WordPress dependencies\n */\nimport { RichText } from '@wordpress/block-editor';\n\nexport default [\n\t{\n\t\tattributes: {\n\t\t\tsrc: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'audio',\n\t\t\t\tattribute: 'src',\n\t\t\t},\n\t\t\tcaption: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'html',\n\t\t\t\tselector: 'figcaption',\n\t\t\t},\n\t\t\tid: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\tautoplay: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'audio',\n\t\t\t\tattribute: 'autoplay',\n\t\t\t},\n\t\t\tloop: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'audio',\n\t\t\t\tattribute: 'loop',\n\t\t\t},\n\t\t\tpreload: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'audio',\n\t\t\t\tattribute: 'preload',\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\talign: true,\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst { autoplay, caption, loop, preload, src } = attributes;\n\n\t\t\treturn (\n\t\t\t\t<figure>\n\t\t\t\t\t<audio\n\t\t\t\t\t\tcontrols=\"controls\"\n\t\t\t\t\t\tsrc={ src }\n\t\t\t\t\t\tautoPlay={ autoplay }\n\t\t\t\t\t\tloop={ loop }\n\t\t\t\t\t\tpreload={ preload }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</figure>\n\t\t\t);\n\t\t},\n\t},\n];\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blob\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"notices\"];","export const ASPECT_RATIOS = [\n\t// Common video resolutions.\n\t{ ratio: '2.33', className: 'wp-embed-aspect-21-9' },\n\t{ ratio: '2.00', className: 'wp-embed-aspect-18-9' },\n\t{ ratio: '1.78', className: 'wp-embed-aspect-16-9' },\n\t{ ratio: '1.33', className: 'wp-embed-aspect-4-3' },\n\t// Vertical video and instagram square video support.\n\t{ ratio: '1.00', className: 'wp-embed-aspect-1-1' },\n\t{ ratio: '0.56', className: 'wp-embed-aspect-9-16' },\n\t{ ratio: '0.50', className: 'wp-embed-aspect-1-2' },\n];\n\nexport const WP_EMBED_TYPE = 'wp-embed';\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"lodash\"];","/**\n * Internal dependencies\n */\nimport { ASPECT_RATIOS, WP_EMBED_TYPE } from './constants';\n\n/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\nimport classnames from 'classnames/dedupe';\nimport memoize from 'memize';\n\n/**\n * WordPress dependencies\n */\nimport { renderToString } from '@wordpress/element';\nimport {\n\tcreateBlock,\n\tgetBlockType,\n\tgetBlockVariations,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport metadata from './block.json';\n\nconst { name: DEFAULT_EMBED_BLOCK } = metadata;\n\n/** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */\n\n/**\n * Returns the embed block's information by matching the provided service provider\n *\n * @param {string} provider The embed block's provider\n * @return {WPBlockVariation} The embed block's information\n */\nexport const getEmbedInfoByProvider = ( provider ) =>\n\tgetBlockVariations( DEFAULT_EMBED_BLOCK )?.find(\n\t\t( { name } ) => name === provider\n\t);\n\n/**\n * Returns true if any of the regular expressions match the URL.\n *\n * @param {string} url      The URL to test.\n * @param {Array}  patterns The list of regular expressions to test agains.\n * @return {boolean} True if any of the regular expressions match the URL.\n */\nexport const matchesPatterns = ( url, patterns = [] ) =>\n\tpatterns.some( ( pattern ) => url.match( pattern ) );\n\n/**\n * Finds the block variation that should be used for the URL,\n * based on the provided URL and the variation's patterns.\n *\n * @param {string} url The URL to test.\n * @return {WPBlockVariation} The block variation that should be used for this URL\n */\nexport const findMoreSuitableBlock = ( url ) =>\n\tgetBlockVariations( DEFAULT_EMBED_BLOCK )?.find( ( { patterns } ) =>\n\t\tmatchesPatterns( url, patterns )\n\t);\n\nexport const isFromWordPress = ( html ) =>\n\thtml && html.includes( 'class=\"wp-embedded-content\"' );\n\nexport const getPhotoHtml = ( photo ) => {\n\t// If full image url not found use thumbnail.\n\tconst imageUrl = photo.url || photo.thumbnail_url;\n\n\t// 100% width for the preview so it fits nicely into the document, some \"thumbnails\" are\n\t// actually the full size photo.\n\tconst photoPreview = (\n\t\t<p>\n\t\t\t<img src={ imageUrl } alt={ photo.title } width=\"100%\" />\n\t\t</p>\n\t);\n\treturn renderToString( photoPreview );\n};\n\n/**\n * Creates a more suitable embed block based on the passed in props\n * and attributes generated from an embed block's preview.\n *\n * We require `attributesFromPreview` to be generated from the latest attributes\n * and preview, and because of the way the react lifecycle operates, we can't\n * guarantee that the attributes contained in the block's props are the latest\n * versions, so we require that these are generated separately.\n * See `getAttributesFromPreview` in the generated embed edit component.\n *\n * @param {Object} props                   The block's props.\n * @param {Object} [attributesFromPreview] Attributes generated from the block's most up to date preview.\n * @return {Object|undefined} A more suitable embed block if one exists.\n */\nexport const createUpgradedEmbedBlock = (\n\tprops,\n\tattributesFromPreview = {}\n) => {\n\tconst { preview, attributes = {} } = props;\n\tconst { url, providerNameSlug, type, ...restAttributes } = attributes;\n\n\tif ( ! url || ! getBlockType( DEFAULT_EMBED_BLOCK ) ) return;\n\n\tconst matchedBlock = findMoreSuitableBlock( url );\n\n\t// WordPress blocks can work on multiple sites, and so don't have patterns,\n\t// so if we're in a WordPress block, assume the user has chosen it for a WordPress URL.\n\tconst isCurrentBlockWP =\n\t\tproviderNameSlug === 'wordpress' || type === WP_EMBED_TYPE;\n\t// If current block is not WordPress and a more suitable block found\n\t// that is different from the current one, create the new matched block.\n\tconst shouldCreateNewBlock =\n\t\t! isCurrentBlockWP &&\n\t\tmatchedBlock &&\n\t\t( matchedBlock.attributes.providerNameSlug !== providerNameSlug ||\n\t\t\t! providerNameSlug );\n\tif ( shouldCreateNewBlock ) {\n\t\treturn createBlock( DEFAULT_EMBED_BLOCK, {\n\t\t\turl,\n\t\t\t...restAttributes,\n\t\t\t...matchedBlock.attributes,\n\t\t} );\n\t}\n\n\tconst wpVariation = getBlockVariations( DEFAULT_EMBED_BLOCK )?.find(\n\t\t( { name } ) => name === 'wordpress'\n\t);\n\n\t// We can't match the URL for WordPress embeds, we have to check the HTML instead.\n\tif (\n\t\t! wpVariation ||\n\t\t! preview ||\n\t\t! isFromWordPress( preview.html ) ||\n\t\tisCurrentBlockWP\n\t) {\n\t\treturn;\n\t}\n\n\t// This is not the WordPress embed block so transform it into one.\n\treturn createBlock( DEFAULT_EMBED_BLOCK, {\n\t\turl,\n\t\t...wpVariation.attributes,\n\t\t// By now we have the preview, but when the new block first renders, it\n\t\t// won't have had all the attributes set, and so won't get the correct\n\t\t// type and it won't render correctly. So, we pass through the current attributes\n\t\t// here so that the initial render works when we switch to the WordPress\n\t\t// block. This only affects the WordPress block because it can't be\n\t\t// rendered in the usual Sandbox (it has a sandbox of its own) and it\n\t\t// relies on the preview to set the correct render type.\n\t\t...attributesFromPreview,\n\t} );\n};\n\n/**\n * Removes all previously set aspect ratio related classes and return the rest\n * existing class names.\n *\n * @param {string} existingClassNames Any existing class names.\n * @return {string} The class names without any aspect ratio related class.\n */\nexport const removeAspectRatioClasses = ( existingClassNames ) => {\n\tif ( ! existingClassNames ) {\n\t\t// Avoids extraneous work and also, by returning the same value as\n\t\t// received, ensures the post is not dirtied by a change of the block\n\t\t// attribute from `undefined` to an emtpy string.\n\t\treturn existingClassNames;\n\t}\n\tconst aspectRatioClassNames = ASPECT_RATIOS.reduce(\n\t\t( accumulator, { className } ) => {\n\t\t\taccumulator[ className ] = false;\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ 'wp-has-aspect-ratio': false }\n\t);\n\treturn classnames( existingClassNames, aspectRatioClassNames );\n};\n\n/**\n * Returns class names with any relevant responsive aspect ratio names.\n *\n * @param {string}  html               The preview HTML that possibly contains an iframe with width and height set.\n * @param {string}  existingClassNames Any existing class names.\n * @param {boolean} allowResponsive    If the responsive class names should be added, or removed.\n * @return {string} Deduped class names.\n */\nexport function getClassNames(\n\thtml,\n\texistingClassNames,\n\tallowResponsive = true\n) {\n\tif ( ! allowResponsive ) {\n\t\treturn removeAspectRatioClasses( existingClassNames );\n\t}\n\n\tconst previewDocument = document.implementation.createHTMLDocument( '' );\n\tpreviewDocument.body.innerHTML = html;\n\tconst iframe = previewDocument.body.querySelector( 'iframe' );\n\n\t// If we have a fixed aspect iframe, and it's a responsive embed block.\n\tif ( iframe && iframe.height && iframe.width ) {\n\t\tconst aspectRatio = ( iframe.width / iframe.height ).toFixed( 2 );\n\t\t// Given the actual aspect ratio, find the widest ratio to support it.\n\t\tfor (\n\t\t\tlet ratioIndex = 0;\n\t\t\tratioIndex < ASPECT_RATIOS.length;\n\t\t\tratioIndex++\n\t\t) {\n\t\t\tconst potentialRatio = ASPECT_RATIOS[ ratioIndex ];\n\t\t\tif ( aspectRatio >= potentialRatio.ratio ) {\n\t\t\t\t// Evaluate the difference between actual aspect ratio and closest match.\n\t\t\t\t// If the difference is too big, do not scale the embed according to aspect ratio.\n\t\t\t\tconst ratioDiff = aspectRatio - potentialRatio.ratio;\n\t\t\t\tif ( ratioDiff > 0.1 ) {\n\t\t\t\t\t// No close aspect ratio match found.\n\t\t\t\t\treturn removeAspectRatioClasses( existingClassNames );\n\t\t\t\t}\n\t\t\t\t// Close aspect ratio match found.\n\t\t\t\treturn classnames(\n\t\t\t\t\tremoveAspectRatioClasses( existingClassNames ),\n\t\t\t\t\tpotentialRatio.className,\n\t\t\t\t\t'wp-has-aspect-ratio'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn existingClassNames;\n}\n\n/**\n * Fallback behaviour for unembeddable URLs.\n * Creates a paragraph block containing a link to the URL, and calls `onReplace`.\n *\n * @param {string}   url       The URL that could not be embedded.\n * @param {Function} onReplace Function to call with the created fallback block.\n */\nexport function fallback( url, onReplace ) {\n\tconst link = <a href={ url }>{ url }</a>;\n\tonReplace(\n\t\tcreateBlock( 'core/paragraph', { content: renderToString( link ) } )\n\t);\n}\n\n/***\n * Gets block attributes based on the preview and responsive state.\n *\n * @param {Object} preview The preview data.\n * @param {string} title The block's title, e.g. Twitter.\n * @param {Object} currentClassNames The block's current class names.\n * @param {boolean} isResponsive Boolean indicating if the block supports responsive content.\n * @param {boolean} allowResponsive Apply responsive classes to fixed size content.\n * @return {Object} Attributes and values.\n */\nexport const getAttributesFromPreview = memoize(\n\t(\n\t\tpreview,\n\t\ttitle,\n\t\tcurrentClassNames,\n\t\tisResponsive,\n\t\tallowResponsive = true\n\t) => {\n\t\tif ( ! preview ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst attributes = {};\n\t\t// Some plugins only return HTML with no type info, so default this to 'rich'.\n\t\tlet { type = 'rich' } = preview;\n\t\t// If we got a provider name from the API, use it for the slug, otherwise we use the title,\n\t\t// because not all embed code gives us a provider name.\n\t\tconst { html, provider_name: providerName } = preview;\n\t\tconst providerNameSlug = kebabCase(\n\t\t\t( providerName || title ).toLowerCase()\n\t\t);\n\n\t\tif ( isFromWordPress( html ) ) {\n\t\t\ttype = WP_EMBED_TYPE;\n\t\t}\n\n\t\tif ( html || 'photo' === type ) {\n\t\t\tattributes.type = type;\n\t\t\tattributes.providerNameSlug = providerNameSlug;\n\t\t}\n\n\t\tattributes.className = getClassNames(\n\t\t\thtml,\n\t\t\tcurrentClassNames,\n\t\t\tisResponsive && allowResponsive\n\t\t);\n\n\t\treturn attributes;\n\t}\n);\n\n/**\n * Returns the attributes derived from the preview, merged with the current attributes.\n *\n * @param {Object}  currentAttributes       The current attributes of the block.\n * @param {Object}  preview                 The preview data.\n * @param {string}  title                   The block's title, e.g. Twitter.\n * @param {boolean} isResponsive            Boolean indicating if the block supports responsive content.\n * @param {boolean} ignorePreviousClassName Determines if the previous className attribute should be ignored when merging.\n * @return {Object} Merged attributes.\n */\nexport const getMergedAttributesWithPreview = (\n\tcurrentAttributes,\n\tpreview,\n\ttitle,\n\tisResponsive,\n\tignorePreviousClassName = false\n) => {\n\tconst { allowResponsive, className } = currentAttributes;\n\treturn {\n\t\t...currentAttributes,\n\t\t...getAttributesFromPreview(\n\t\t\tpreview,\n\t\t\ttitle,\n\t\t\tignorePreviousClassName ? undefined : className,\n\t\t\tisResponsive,\n\t\t\tallowResponsive\n\t\t),\n\t};\n};\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL } from '@wordpress/blob';\nimport {\n\tDisabled,\n\tPanelBody,\n\tSelectControl,\n\tSpinner,\n\tToggleControl,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\nimport { __, _x } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { audio as icon } from '@wordpress/icons';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\n\nconst ALLOWED_MEDIA_TYPES = [ 'audio' ];\n\nfunction AudioEdit( {\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tonReplace,\n\tisSelected,\n\tinsertBlocksAfter,\n} ) {\n\tconst { id, autoplay, caption, loop, preload, src } = attributes;\n\tconst isTemporaryAudio = ! id && isBlobURL( src );\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().mediaUpload;\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( ! id && isBlobURL( src ) ) {\n\t\t\tconst file = getBlobByURL( src );\n\n\t\t\tif ( file ) {\n\t\t\t\tmediaUpload( {\n\t\t\t\t\tfilesList: [ file ],\n\t\t\t\t\tonFileChange: ( [ media ] ) => onSelectAudio( media ),\n\t\t\t\t\tonError: ( e ) => onUploadError( e ),\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}, [] );\n\n\tfunction toggleAttribute( attribute ) {\n\t\treturn ( newValue ) => {\n\t\t\tsetAttributes( { [ attribute ]: newValue } );\n\t\t};\n\t}\n\n\tfunction onSelectURL( newSrc ) {\n\t\t// Set the block's src from the edit component's state, and switch off\n\t\t// the editing UI.\n\t\tif ( newSrc !== src ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url: newSrc },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock && onReplace ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAttributes( { src: newSrc, id: undefined } );\n\t\t}\n\t}\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction getAutoplayHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Autoplay may cause usability issues for some users.' )\n\t\t\t: null;\n\t}\n\n\tfunction onSelectAudio( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error and we should continue in the editing state\n\t\t\t// previous attributes should be removed because they may be temporary blob urls.\n\t\t\tsetAttributes( { src: undefined, id: undefined } );\n\t\t\treturn;\n\t\t}\n\t\t// Sets the block's attribute and updates the edit component from the\n\t\t// selected media, then switches off the editing UI.\n\t\tsetAttributes( { src: media.url, id: media.id } );\n\t}\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': isTemporaryAudio,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\tif ( ! src ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectAudio }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\tonSelect={ onSelectAudio }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t</BlockControls>\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\tlabel={ __( 'Autoplay' ) }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'autoplay' ) }\n\t\t\t\t\t\tchecked={ autoplay }\n\t\t\t\t\t\thelp={ getAutoplayHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Loop' ) }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'loop' ) }\n\t\t\t\t\t\tchecked={ loop }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ _x( 'Preload', 'noun; Audio block parameter' ) }\n\t\t\t\t\t\tvalue={ preload || '' }\n\t\t\t\t\t\t// `undefined` is required for the preload attribute to be unset.\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tpreload: value || undefined,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t{ value: '', label: __( 'Browser default' ) },\n\t\t\t\t\t\t\t{ value: 'auto', label: __( 'Auto' ) },\n\t\t\t\t\t\t\t{ value: 'metadata', label: __( 'Metadata' ) },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: 'none',\n\t\t\t\t\t\t\t\tlabel: _x( 'None', 'Preload value' ),\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\t<figure { ...blockProps }>\n\t\t\t\t{ /*\n\t\t\t\t\tDisable the audio tag if the block is not selected\n\t\t\t\t\tso the user clicking on it won't play the\n\t\t\t\t\tfile or change the position slider when the controls are enabled.\n\t\t\t\t*/ }\n\t\t\t\t<Disabled isDisabled={ ! isSelected }>\n\t\t\t\t\t<audio controls=\"controls\" src={ src } />\n\t\t\t\t</Disabled>\n\t\t\t\t{ isTemporaryAudio && <Spinner /> }\n\t\t\t\t{ ( ! RichText.isEmpty( caption ) || isSelected ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tclassName={ __experimentalGetElementClassName(\n\t\t\t\t\t\t\t'caption'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\taria-label={ __( 'Audio caption text' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Add caption' ) }\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { caption: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinlineToolbar\n\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\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</figure>\n\t\t</>\n\t);\n}\n\nexport default AudioEdit;\n","/**\n * WordPress dependencies\n */\nimport { createBlobURL } from '@wordpress/blob';\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'files',\n\t\t\tisMatch( files ) {\n\t\t\t\treturn (\n\t\t\t\t\tfiles.length === 1 &&\n\t\t\t\t\tfiles[ 0 ].type.indexOf( 'audio/' ) === 0\n\t\t\t\t);\n\t\t\t},\n\t\t\ttransform( files ) {\n\t\t\t\tconst file = files[ 0 ];\n\t\t\t\t// We don't need to upload the media directly here\n\t\t\t\t// It's already done as part of the `componentDidMount`\n\t\t\t\t// in the audio block.\n\t\t\t\tconst block = createBlock( 'core/audio', {\n\t\t\t\t\tsrc: createBlobURL( file ),\n\t\t\t\t} );\n\n\t\t\t\treturn block;\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'shortcode',\n\t\t\ttag: 'audio',\n\t\t\tattributes: {\n\t\t\t\tsrc: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( {\n\t\t\t\t\t\tnamed: { src, mp3, m4a, ogg, wav, wma },\n\t\t\t\t\t} ) => {\n\t\t\t\t\t\treturn src || mp3 || m4a || ogg || wav || wma;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tloop: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( { named: { loop } } ) => {\n\t\t\t\t\t\treturn loop;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tautoplay: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( { named: { autoplay } } ) => {\n\t\t\t\t\t\treturn autoplay;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tpreload: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( { named: { preload } } ) => {\n\t\t\t\t\t\treturn preload;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { audio 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\tsrc: 'https://upload.wikimedia.org/wikipedia/commons/d/dd/Armstrong_Small_Step.ogg',\n\t\t},\n\t},\n\ttransforms,\n\tdeprecated,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { autoplay, caption, loop, preload, src } = attributes;\n\n\treturn (\n\t\tsrc && (\n\t\t\t<figure { ...useBlockProps.save() }>\n\t\t\t\t<audio\n\t\t\t\t\tcontrols=\"controls\"\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tautoPlay={ autoplay }\n\t\t\t\t\tloop={ loop }\n\t\t\t\t\tpreload={ preload }\n\t\t\t\t/>\n\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tclassName={ __experimentalGetElementClassName(\n\t\t\t\t\t\t\t'caption'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</figure>\n\t\t)\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst button = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 6.5H5c-1.1 0-2 .9-2 2v7c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-7c0-1.1-.9-2-2-2zm.5 9c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5v-7c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v7zM8 12.8h8v-1.5H8v1.5z\" />\n\t</SVG>\n);\n\nexport default button;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"compose\"];","/**\n * External dependencies\n */\nimport { isEmpty, mapValues, pickBy } from 'lodash';\n\nconst identity = ( x ) => x;\n\n/**\n * Removed empty nodes from nested objects.\n *\n * @param {Object} object\n * @return {Object} Object cleaned from empty nodes.\n */\nconst cleanEmptyObject = ( object ) => {\n\tif (\n\t\tobject === null ||\n\t\ttypeof object !== 'object' ||\n\t\tArray.isArray( object )\n\t) {\n\t\treturn object;\n\t}\n\tconst cleanedNestedObjects = pickBy(\n\t\tmapValues( object, cleanEmptyObject ),\n\t\tidentity\n\t);\n\treturn isEmpty( cleanedNestedObjects ) ? undefined : cleanedNestedObjects;\n};\n\nexport default cleanEmptyObject;\n","/**\n * Internal dependencies\n */\nimport cleanEmptyObject from './clean-empty-object';\n\n/**\n * Migrates the current style.typography.fontFamily attribute,\n * whose value was \"var:preset|font-family|helvetica-arial\",\n * to the style.fontFamily attribute, whose value will be \"helvetica-arial\".\n *\n * @param {Object} attributes The current attributes\n * @return {Object} The updated attributes.\n */\nexport default function ( attributes ) {\n\tif ( ! attributes?.style?.typography?.fontFamily ) {\n\t\treturn attributes;\n\t}\n\n\tconst { fontFamily, ...typography } = attributes.style.typography;\n\n\treturn {\n\t\t...attributes,\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...attributes.style,\n\t\t\ttypography,\n\t\t} ),\n\t\tfontFamily: fontFamily.split( '|' ).pop(),\n\t};\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tgetColorClassName,\n\tuseBlockProps,\n\t__experimentalGetGradientClass,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n} from '@wordpress/block-editor';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\n\nconst migrateBorderRadius = ( attributes ) => {\n\tconst { borderRadius, ...newAttributes } = attributes;\n\t// We have to check old property `borderRadius` and if\n\t// `styles.border.radius` is a `number`\n\tconst oldBorderRadius = [\n\t\tborderRadius,\n\t\tnewAttributes.style?.border?.radius,\n\t].find( ( possibleBorderRadius ) => {\n\t\treturn (\n\t\t\ttypeof possibleBorderRadius === 'number' &&\n\t\t\tpossibleBorderRadius !== 0\n\t\t);\n\t} );\n\tif ( ! oldBorderRadius ) {\n\t\treturn newAttributes;\n\t}\n\n\treturn {\n\t\t...newAttributes,\n\t\tstyle: {\n\t\t\t...newAttributes.style,\n\t\t\tborder: {\n\t\t\t\t...newAttributes.style?.border,\n\t\t\t\tradius: `${ oldBorderRadius }px`,\n\t\t\t},\n\t\t},\n\t};\n};\n\nconst migrateCustomColorsAndGradients = ( attributes ) => {\n\tif (\n\t\t! attributes.customTextColor &&\n\t\t! attributes.customBackgroundColor &&\n\t\t! attributes.customGradient\n\t) {\n\t\treturn attributes;\n\t}\n\tconst style = { color: {} };\n\tif ( attributes.customTextColor ) {\n\t\tstyle.color.text = attributes.customTextColor;\n\t}\n\tif ( attributes.customBackgroundColor ) {\n\t\tstyle.color.background = attributes.customBackgroundColor;\n\t}\n\tif ( attributes.customGradient ) {\n\t\tstyle.color.gradient = attributes.customGradient;\n\t}\n\n\tconst {\n\t\tcustomTextColor,\n\t\tcustomBackgroundColor,\n\t\tcustomGradient,\n\t\t...restAttributes\n\t} = attributes;\n\n\treturn {\n\t\t...restAttributes,\n\t\tstyle,\n\t};\n};\n\nconst oldColorsMigration = ( attributes ) => {\n\tconst { color, textColor, ...restAttributes } = {\n\t\t...attributes,\n\t\tcustomTextColor:\n\t\t\tattributes.textColor && '#' === attributes.textColor[ 0 ]\n\t\t\t\t? attributes.textColor\n\t\t\t\t: undefined,\n\t\tcustomBackgroundColor:\n\t\t\tattributes.color && '#' === attributes.color[ 0 ]\n\t\t\t\t? attributes.color\n\t\t\t\t: undefined,\n\t};\n\treturn migrateCustomColorsAndGradients( restAttributes );\n};\n\nconst blockAttributes = {\n\turl: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'a',\n\t\tattribute: 'href',\n\t},\n\ttitle: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'a',\n\t\tattribute: 'title',\n\t},\n\ttext: {\n\t\ttype: 'string',\n\t\tsource: 'html',\n\t\tselector: 'a',\n\t},\n};\n\nconst v11 = {\n\tattributes: {\n\t\turl: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a',\n\t\t\tattribute: 'href',\n\t\t},\n\t\ttitle: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a',\n\t\t\tattribute: 'title',\n\t\t},\n\t\ttext: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'a',\n\t\t},\n\t\tlinkTarget: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a',\n\t\t\tattribute: 'target',\n\t\t},\n\t\trel: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a',\n\t\t\tattribute: 'rel',\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\ttextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tgradient: {\n\t\t\ttype: 'string',\n\t\t},\n\t\twidth: {\n\t\t\ttype: 'number',\n\t\t},\n\t},\n\tsupports: {\n\t\tanchor: true,\n\t\talign: true,\n\t\talignWide: false,\n\t\tcolor: {\n\t\t\t__experimentalSkipSerialization: true,\n\t\t\tgradients: true,\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tbackground: true,\n\t\t\t\ttext: true,\n\t\t\t},\n\t\t},\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tfontSize: true,\n\t\t\t},\n\t\t},\n\t\treusable: false,\n\t\tspacing: {\n\t\t\t__experimentalSkipSerialization: true,\n\t\t\tpadding: [ 'horizontal', 'vertical' ],\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tpadding: true,\n\t\t\t},\n\t\t},\n\t\t__experimentalBorder: {\n\t\t\tradius: true,\n\t\t\t__experimentalSkipSerialization: true,\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tradius: true,\n\t\t\t},\n\t\t},\n\t\t__experimentalSelector: '.wp-block-button__link',\n\t},\n\tsave( { attributes, className } ) {\n\t\tconst { fontSize, linkTarget, rel, style, text, title, url, width } =\n\t\t\tattributes;\n\n\t\tif ( ! text ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst borderProps = getBorderClassesAndStyles( attributes );\n\t\tconst colorProps = getColorClassesAndStyles( attributes );\n\t\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\t\tconst buttonClasses = classnames(\n\t\t\t'wp-block-button__link',\n\t\t\tcolorProps.className,\n\t\t\tborderProps.className,\n\t\t\t{\n\t\t\t\t// For backwards compatibility add style that isn't provided via\n\t\t\t\t// block support.\n\t\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t\t}\n\t\t);\n\t\tconst buttonStyle = {\n\t\t\t...borderProps.style,\n\t\t\t...colorProps.style,\n\t\t\t...spacingProps.style,\n\t\t};\n\n\t\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t\t// if it had already been assigned, for the sake of backward-compatibility.\n\t\t// A title will no longer be assigned for new or updated button block links.\n\n\t\tconst wrapperClasses = classnames( className, {\n\t\t\t[ `has-custom-width wp-block-button__width-${ width }` ]: width,\n\t\t\t[ `has-custom-font-size` ]: fontSize || style?.typography?.fontSize,\n\t\t} );\n\n\t\treturn (\n\t\t\t<div { ...useBlockProps.save( { className: wrapperClasses } ) }>\n\t\t\t\t<RichText.Content\n\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\thref={ url }\n\t\t\t\t\ttitle={ title }\n\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\trel={ rel }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t},\n};\n\nconst v10 = {\n\tattributes: {\n\t\turl: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a',\n\t\t\tattribute: 'href',\n\t\t},\n\t\ttitle: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a',\n\t\t\tattribute: 'title',\n\t\t},\n\t\ttext: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'a',\n\t\t},\n\t\tlinkTarget: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a',\n\t\t\tattribute: 'target',\n\t\t},\n\t\trel: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a',\n\t\t\tattribute: 'rel',\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\ttextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tgradient: {\n\t\t\ttype: 'string',\n\t\t},\n\t\twidth: {\n\t\t\ttype: 'number',\n\t\t},\n\t},\n\tsupports: {\n\t\tanchor: true,\n\t\talign: true,\n\t\talignWide: false,\n\t\tcolor: {\n\t\t\t__experimentalSkipSerialization: true,\n\t\t\tgradients: true,\n\t\t},\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t},\n\t\treusable: false,\n\t\tspacing: {\n\t\t\t__experimentalSkipSerialization: true,\n\t\t\tpadding: [ 'horizontal', 'vertical' ],\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tpadding: true,\n\t\t\t},\n\t\t},\n\t\t__experimentalBorder: {\n\t\t\tradius: true,\n\t\t\t__experimentalSkipSerialization: true,\n\t\t},\n\t\t__experimentalSelector: '.wp-block-button__link',\n\t},\n\tsave( { attributes, className } ) {\n\t\tconst { fontSize, linkTarget, rel, style, text, title, url, width } =\n\t\t\tattributes;\n\n\t\tif ( ! text ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst borderProps = getBorderClassesAndStyles( attributes );\n\t\tconst colorProps = getColorClassesAndStyles( attributes );\n\t\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\t\tconst buttonClasses = classnames(\n\t\t\t'wp-block-button__link',\n\t\t\tcolorProps.className,\n\t\t\tborderProps.className,\n\t\t\t{\n\t\t\t\t// For backwards compatibility add style that isn't provided via\n\t\t\t\t// block support.\n\t\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t\t}\n\t\t);\n\t\tconst buttonStyle = {\n\t\t\t...borderProps.style,\n\t\t\t...colorProps.style,\n\t\t\t...spacingProps.style,\n\t\t};\n\n\t\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t\t// if it had already been assigned, for the sake of backward-compatibility.\n\t\t// A title will no longer be assigned for new or updated button block links.\n\n\t\tconst wrapperClasses = classnames( className, {\n\t\t\t[ `has-custom-width wp-block-button__width-${ width }` ]: width,\n\t\t\t[ `has-custom-font-size` ]: fontSize || style?.typography?.fontSize,\n\t\t} );\n\n\t\treturn (\n\t\t\t<div { ...useBlockProps.save( { className: wrapperClasses } ) }>\n\t\t\t\t<RichText.Content\n\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\thref={ url }\n\t\t\t\t\ttitle={ title }\n\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\trel={ rel }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t},\n\tmigrate: migrateFontFamily,\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\nconst deprecated = [\n\tv11,\n\tv10,\n\t{\n\t\tsupports: {\n\t\t\tanchor: true,\n\t\t\talign: true,\n\t\t\talignWide: false,\n\t\t\tcolor: {\n\t\t\t\t__experimentalSkipSerialization: true,\n\t\t\t\tgradients: true,\n\t\t\t},\n\t\t\ttypography: {\n\t\t\t\tfontSize: true,\n\t\t\t\t__experimentalFontFamily: true,\n\t\t\t},\n\t\t\treusable: false,\n\t\t\t__experimentalSelector: '.wp-block-button__link',\n\t\t},\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tlinkTarget: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'target',\n\t\t\t},\n\t\t\trel: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'rel',\n\t\t\t},\n\t\t\tplaceholder: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tgradient: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\twidth: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t},\n\t\tisEligible( { style } ) {\n\t\t\treturn typeof style?.border?.radius === 'number';\n\t\t},\n\t\tsave( { attributes, className } ) {\n\t\t\tconst {\n\t\t\t\tfontSize,\n\t\t\t\tlinkTarget,\n\t\t\t\trel,\n\t\t\t\tstyle,\n\t\t\t\ttext,\n\t\t\t\ttitle,\n\t\t\t\turl,\n\t\t\t\twidth,\n\t\t\t} = attributes;\n\n\t\t\tif ( ! text ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst borderRadius = style?.border?.radius;\n\t\t\tconst colorProps = getColorClassesAndStyles( attributes );\n\t\t\tconst buttonClasses = classnames(\n\t\t\t\t'wp-block-button__link',\n\t\t\t\tcolorProps.className,\n\t\t\t\t{\n\t\t\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t\t\t}\n\t\t\t);\n\t\t\tconst buttonStyle = {\n\t\t\t\tborderRadius: borderRadius ? borderRadius : undefined,\n\t\t\t\t...colorProps.style,\n\t\t\t};\n\n\t\t\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t\t\t// if it had already been assigned, for the sake of backward-compatibility.\n\t\t\t// A title will no longer be assigned for new or updated button block links.\n\n\t\t\tconst wrapperClasses = classnames( className, {\n\t\t\t\t[ `has-custom-width wp-block-button__width-${ width }` ]: width,\n\t\t\t\t[ `has-custom-font-size` ]:\n\t\t\t\t\tfontSize || style?.typography?.fontSize,\n\t\t\t} );\n\n\t\t\treturn (\n\t\t\t\t<div { ...useBlockProps.save( { className: wrapperClasses } ) }>\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\thref={ url }\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\t\tvalue={ text }\n\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\tmigrate: compose( migrateFontFamily, migrateBorderRadius ),\n\t},\n\t{\n\t\tsupports: {\n\t\t\tanchor: true,\n\t\t\talign: true,\n\t\t\talignWide: false,\n\t\t\tcolor: {\n\t\t\t\t__experimentalSkipSerialization: true,\n\t\t\t},\n\t\t\treusable: false,\n\t\t\t__experimentalSelector: '.wp-block-button__link',\n\t\t},\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tlinkTarget: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'target',\n\t\t\t},\n\t\t\trel: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'rel',\n\t\t\t},\n\t\t\tplaceholder: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tborderRadius: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tgradient: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t\twidth: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t},\n\t\tsave( { attributes, className } ) {\n\t\t\tconst { borderRadius, linkTarget, rel, text, title, url, width } =\n\t\t\t\tattributes;\n\t\t\tconst colorProps = getColorClassesAndStyles( attributes );\n\t\t\tconst buttonClasses = classnames(\n\t\t\t\t'wp-block-button__link',\n\t\t\t\tcolorProps.className,\n\t\t\t\t{\n\t\t\t\t\t'no-border-radius': borderRadius === 0,\n\t\t\t\t}\n\t\t\t);\n\t\t\tconst buttonStyle = {\n\t\t\t\tborderRadius: borderRadius ? borderRadius + 'px' : undefined,\n\t\t\t\t...colorProps.style,\n\t\t\t};\n\n\t\t\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t\t\t// if it had already been assigned, for the sake of backward-compatibility.\n\t\t\t// A title will no longer be assigned for new or updated button block links.\n\n\t\t\tconst wrapperClasses = classnames( className, {\n\t\t\t\t[ `has-custom-width wp-block-button__width-${ width }` ]: width,\n\t\t\t} );\n\n\t\t\treturn (\n\t\t\t\t<div { ...useBlockProps.save( { className: wrapperClasses } ) }>\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\thref={ url }\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\t\tvalue={ text }\n\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\tmigrate: compose( migrateFontFamily, migrateBorderRadius ),\n\t},\n\t{\n\t\tsupports: {\n\t\t\tanchor: true,\n\t\t\talign: true,\n\t\t\talignWide: false,\n\t\t\tcolor: {\n\t\t\t\t__experimentalSkipSerialization: true,\n\t\t\t},\n\t\t\treusable: false,\n\t\t\t__experimentalSelector: '.wp-block-button__link',\n\t\t},\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tlinkTarget: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'target',\n\t\t\t},\n\t\t\trel: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'rel',\n\t\t\t},\n\t\t\tplaceholder: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tborderRadius: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tgradient: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t\twidth: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t},\n\t\tsave( { attributes, className } ) {\n\t\t\tconst { borderRadius, linkTarget, rel, text, title, url, width } =\n\t\t\t\tattributes;\n\t\t\tconst colorProps = getColorClassesAndStyles( attributes );\n\t\t\tconst buttonClasses = classnames(\n\t\t\t\t'wp-block-button__link',\n\t\t\t\tcolorProps.className,\n\t\t\t\t{\n\t\t\t\t\t'no-border-radius': borderRadius === 0,\n\t\t\t\t}\n\t\t\t);\n\t\t\tconst buttonStyle = {\n\t\t\t\tborderRadius: borderRadius ? borderRadius + 'px' : undefined,\n\t\t\t\t...colorProps.style,\n\t\t\t};\n\n\t\t\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t\t\t// if it had already been assigned, for the sake of backward-compatibility.\n\t\t\t// A title will no longer be assigned for new or updated button block links.\n\n\t\t\tconst wrapperClasses = classnames( className, {\n\t\t\t\t[ `has-custom-width wp-block-button__width-${ width }` ]: width,\n\t\t\t} );\n\n\t\t\treturn (\n\t\t\t\t<div { ...useBlockProps.save( { className: wrapperClasses } ) }>\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\thref={ url }\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\t\tvalue={ text }\n\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\tmigrate: compose( migrateFontFamily, migrateBorderRadius ),\n\t},\n\t{\n\t\tsupports: {\n\t\t\talign: true,\n\t\t\talignWide: false,\n\t\t\tcolor: { gradients: true },\n\t\t},\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tlinkTarget: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'target',\n\t\t\t},\n\t\t\trel: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'rel',\n\t\t\t},\n\t\t\tplaceholder: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tborderRadius: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tgradient: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tstyle: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst { borderRadius, linkTarget, rel, text, title, url } =\n\t\t\t\tattributes;\n\t\t\tconst buttonClasses = classnames( 'wp-block-button__link', {\n\t\t\t\t'no-border-radius': borderRadius === 0,\n\t\t\t} );\n\t\t\tconst buttonStyle = {\n\t\t\t\tborderRadius: borderRadius ? borderRadius + 'px' : undefined,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<RichText.Content\n\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\thref={ url }\n\t\t\t\t\ttitle={ title }\n\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\trel={ rel }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t\tmigrate: migrateBorderRadius,\n\t},\n\t{\n\t\tsupports: {\n\t\t\talign: true,\n\t\t\talignWide: false,\n\t\t},\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tlinkTarget: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'target',\n\t\t\t},\n\t\t\trel: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'rel',\n\t\t\t},\n\t\t\tplaceholder: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tborderRadius: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomGradient: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tgradient: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tisEligible: ( attributes ) =>\n\t\t\t!! attributes.customTextColor ||\n\t\t\t!! attributes.customBackgroundColor ||\n\t\t\t!! attributes.customGradient,\n\t\tmigrate: compose(\n\t\t\tmigrateBorderRadius,\n\t\t\tmigrateCustomColorsAndGradients\n\t\t),\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\tbackgroundColor,\n\t\t\t\tborderRadius,\n\t\t\t\tcustomBackgroundColor,\n\t\t\t\tcustomTextColor,\n\t\t\t\tcustomGradient,\n\t\t\t\tlinkTarget,\n\t\t\t\tgradient,\n\t\t\t\trel,\n\t\t\t\ttext,\n\t\t\t\ttextColor,\n\t\t\t\ttitle,\n\t\t\t\turl,\n\t\t\t} = attributes;\n\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\t\t\tconst backgroundClass =\n\t\t\t\t! customGradient &&\n\t\t\t\tgetColorClassName( 'background-color', backgroundColor );\n\t\t\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\n\t\t\tconst buttonClasses = classnames( 'wp-block-button__link', {\n\t\t\t\t'has-text-color': textColor || customTextColor,\n\t\t\t\t[ textClass ]: textClass,\n\t\t\t\t'has-background':\n\t\t\t\t\tbackgroundColor ||\n\t\t\t\t\tcustomBackgroundColor ||\n\t\t\t\t\tcustomGradient ||\n\t\t\t\t\tgradient,\n\t\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t\t'no-border-radius': borderRadius === 0,\n\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t} );\n\n\t\t\tconst buttonStyle = {\n\t\t\t\tbackground: customGradient ? customGradient : undefined,\n\t\t\t\tbackgroundColor:\n\t\t\t\t\tbackgroundClass || customGradient || gradient\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: customBackgroundColor,\n\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t\tborderRadius: borderRadius ? borderRadius + 'px' : undefined,\n\t\t\t};\n\n\t\t\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t\t\t// if it had already been assigned, for the sake of backward-compatibility.\n\t\t\t// A title will no longer be assigned for new or updated button block links.\n\n\t\t\treturn (\n\t\t\t\t<div>\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\thref={ url }\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\t\tvalue={ text }\n\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\talign: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'none',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tlinkTarget: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'target',\n\t\t\t},\n\t\t\trel: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'a',\n\t\t\t\tattribute: 'rel',\n\t\t\t},\n\t\t\tplaceholder: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tisEligible( attribute ) {\n\t\t\treturn (\n\t\t\t\tattribute.className &&\n\t\t\t\tattribute.className.includes( 'is-style-squared' )\n\t\t\t);\n\t\t},\n\t\tmigrate( attributes ) {\n\t\t\tlet newClassName = attributes.className;\n\t\t\tif ( newClassName ) {\n\t\t\t\tnewClassName = newClassName\n\t\t\t\t\t.replace( /is-style-squared[\\s]?/, '' )\n\t\t\t\t\t.trim();\n\t\t\t}\n\t\t\treturn migrateBorderRadius(\n\t\t\t\tmigrateCustomColorsAndGradients( {\n\t\t\t\t\t...attributes,\n\t\t\t\t\tclassName: newClassName ? newClassName : undefined,\n\t\t\t\t\tborderRadius: 0,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\tbackgroundColor,\n\t\t\t\tcustomBackgroundColor,\n\t\t\t\tcustomTextColor,\n\t\t\t\tlinkTarget,\n\t\t\t\trel,\n\t\t\t\ttext,\n\t\t\t\ttextColor,\n\t\t\t\ttitle,\n\t\t\t\turl,\n\t\t\t} = attributes;\n\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\n\t\t\tconst buttonClasses = classnames( 'wp-block-button__link', {\n\t\t\t\t'has-text-color': textColor || customTextColor,\n\t\t\t\t[ textClass ]: textClass,\n\t\t\t\t'has-background': backgroundColor || customBackgroundColor,\n\t\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t} );\n\n\t\t\tconst buttonStyle = {\n\t\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t\t? undefined\n\t\t\t\t\t: customBackgroundColor,\n\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<div>\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\thref={ url }\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\t\tvalue={ text }\n\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\talign: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'none',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tmigrate: oldColorsMigration,\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\turl,\n\t\t\t\ttext,\n\t\t\t\ttitle,\n\t\t\t\tbackgroundColor,\n\t\t\t\ttextColor,\n\t\t\t\tcustomBackgroundColor,\n\t\t\t\tcustomTextColor,\n\t\t\t} = attributes;\n\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\n\t\t\tconst buttonClasses = classnames( 'wp-block-button__link', {\n\t\t\t\t'has-text-color': textColor || customTextColor,\n\t\t\t\t[ textClass ]: textClass,\n\t\t\t\t'has-background': backgroundColor || customBackgroundColor,\n\t\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t} );\n\n\t\t\tconst buttonStyle = {\n\t\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t\t? undefined\n\t\t\t\t\t: customBackgroundColor,\n\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<div>\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\thref={ url }\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\t\tvalue={ text }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tcolor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\talign: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'none',\n\t\t\t},\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst { url, text, title, align, color, textColor } = attributes;\n\n\t\t\tconst buttonStyle = {\n\t\t\t\tbackgroundColor: color,\n\t\t\t\tcolor: textColor,\n\t\t\t};\n\n\t\t\tconst linkClass = 'wp-block-button__link';\n\n\t\t\treturn (\n\t\t\t\t<div className={ `align${ align }` }>\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tclassName={ linkClass }\n\t\t\t\t\t\thref={ url }\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\tstyle={ buttonStyle }\n\t\t\t\t\t\tvalue={ text }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\tmigrate: oldColorsMigration,\n\t},\n\t{\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tcolor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\talign: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'none',\n\t\t\t},\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst { url, text, title, align, color, textColor } = attributes;\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ `align${ align }` }\n\t\t\t\t\tstyle={ { backgroundColor: color } }\n\t\t\t\t>\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\thref={ url }\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\tstyle={ { color: textColor } }\n\t\t\t\t\t\tvalue={ text }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\tmigrate: oldColorsMigration,\n\t},\n];\n\nexport default deprecated;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"keycodes\"];","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst link = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M15.6 7.2H14v1.5h1.6c2 0 3.7 1.7 3.7 3.7s-1.7 3.7-3.7 3.7H14v1.5h1.6c2.8 0 5.2-2.3 5.2-5.2 0-2.9-2.3-5.2-5.2-5.2zM4.7 12.4c0-2 1.7-3.7 3.7-3.7H10V7.2H8.4c-2.9 0-5.2 2.3-5.2 5.2 0 2.9 2.3 5.2 5.2 5.2H10v-1.5H8.4c-2 0-3.7-1.7-3.7-3.7zm4.6.9h5.3v-1.5H9.3v1.5z\" />\n\t</SVG>\n);\n\nexport default link;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst linkOff = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M15.6 7.3h-.7l1.6-3.5-.9-.4-3.9 8.5H9v1.5h2l-1.3 2.8H8.4c-2 0-3.7-1.7-3.7-3.7s1.7-3.7 3.7-3.7H10V7.3H8.4c-2.9 0-5.2 2.3-5.2 5.2 0 2.9 2.3 5.2 5.2 5.2H9l-1.4 3.2.9.4 5.7-12.5h1.4c2 0 3.7 1.7 3.7 3.7s-1.7 3.7-3.7 3.7H14v1.5h1.6c2.9 0 5.2-2.3 5.2-5.2 0-2.9-2.4-5.2-5.2-5.2z\" />\n\t</SVG>\n);\n\nexport default linkOff;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useEffect, useState, useRef } from '@wordpress/element';\nimport {\n\tButton,\n\tButtonGroup,\n\tPanelBody,\n\tTextControl,\n\tToolbarButton,\n\tPopover,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalUseColorProps as useColorProps,\n\t__experimentalGetSpacingClassesAndStyles as useSpacingProps,\n\t__experimentalLinkControl as LinkControl,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';\nimport { link, linkOff } from '@wordpress/icons';\nimport { createBlock } from '@wordpress/blocks';\nimport { useMergeRefs } from '@wordpress/compose';\n\nconst NEW_TAB_REL = 'noreferrer noopener';\n\nfunction WidthPanel( { selectedWidth, setAttributes } ) {\n\tfunction handleChange( newWidth ) {\n\t\t// Check if we are toggling the width off\n\t\tconst width = selectedWidth === newWidth ? undefined : newWidth;\n\n\t\t// Update attributes.\n\t\tsetAttributes( { width } );\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Width settings' ) }>\n\t\t\t<ButtonGroup aria-label={ __( 'Button width' ) }>\n\t\t\t\t{ [ 25, 50, 75, 100 ].map( ( widthValue ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={ widthValue }\n\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\twidthValue === selectedWidth\n\t\t\t\t\t\t\t\t\t? 'primary'\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => handleChange( widthValue ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ widthValue }%\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</ButtonGroup>\n\t\t</PanelBody>\n\t);\n}\n\nfunction ButtonEdit( props ) {\n\tconst {\n\t\tattributes,\n\t\tsetAttributes,\n\t\tclassName,\n\t\tisSelected,\n\t\tonReplace,\n\t\tmergeBlocks,\n\t} = props;\n\tconst { linkTarget, placeholder, rel, style, text, url, width } =\n\t\tattributes;\n\tconst onSetLinkRel = useCallback(\n\t\t( value ) => {\n\t\t\tsetAttributes( { rel: value } );\n\t\t},\n\t\t[ setAttributes ]\n\t);\n\n\tfunction onToggleOpenInNewTab( value ) {\n\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\tlet updatedRel = rel;\n\t\tif ( newLinkTarget && ! rel ) {\n\t\t\tupdatedRel = NEW_TAB_REL;\n\t\t} else if ( ! newLinkTarget && rel === NEW_TAB_REL ) {\n\t\t\tupdatedRel = undefined;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tlinkTarget: newLinkTarget,\n\t\t\trel: updatedRel,\n\t\t} );\n\t}\n\n\tfunction setButtonText( newText ) {\n\t\t// Remove anchor tags from button text content.\n\t\tsetAttributes( { text: newText.replace( /<\\/?a[^>]*>/g, '' ) } );\n\t}\n\n\tfunction onKeyDown( event ) {\n\t\tif ( isKeyboardEvent.primary( event, 'k' ) ) {\n\t\t\tstartEditing( event );\n\t\t} else if ( isKeyboardEvent.primaryShift( event, 'k' ) ) {\n\t\t\tunlink();\n\t\t\trichTextRef.current?.focus();\n\t\t}\n\t}\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst colorProps = useColorProps( attributes );\n\tconst spacingProps = useSpacingProps( attributes );\n\tconst ref = useRef();\n\tconst richTextRef = useRef();\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, ref ] ),\n\t\tonKeyDown,\n\t} );\n\n\tconst [ isEditingURL, setIsEditingURL ] = useState( false );\n\tconst isURLSet = !! url;\n\tconst opensInNewTab = linkTarget === '_blank';\n\n\tfunction startEditing( event ) {\n\t\tevent.preventDefault();\n\t\tsetIsEditingURL( true );\n\t}\n\n\tfunction unlink() {\n\t\tsetAttributes( {\n\t\t\turl: undefined,\n\t\t\tlinkTarget: undefined,\n\t\t\trel: undefined,\n\t\t} );\n\t\tsetIsEditingURL( false );\n\t}\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsEditingURL( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\t{ ...blockProps }\n\t\t\t\tclassName={ classnames( blockProps.className, {\n\t\t\t\t\t[ `has-custom-width wp-block-button__width-${ width }` ]:\n\t\t\t\t\t\twidth,\n\t\t\t\t\t[ `has-custom-font-size` ]: blockProps.style.fontSize,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<RichText\n\t\t\t\t\tref={ richTextRef }\n\t\t\t\t\taria-label={ __( 'Button text' ) }\n\t\t\t\t\tplaceholder={ placeholder || __( 'Add text…' ) }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\tonChange={ ( value ) => setButtonText( value ) }\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t'wp-block-button__link',\n\t\t\t\t\t\tcolorProps.className,\n\t\t\t\t\t\tborderProps.className,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// For backwards compatibility add style that isn't\n\t\t\t\t\t\t\t// provided via block support.\n\t\t\t\t\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t__experimentalGetElementClassName( 'button' )\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t\t...colorProps.style,\n\t\t\t\t\t\t...spacingProps.style,\n\t\t\t\t\t} }\n\t\t\t\t\tonSplit={ ( value ) =>\n\t\t\t\t\t\tcreateBlock( 'core/button', {\n\t\t\t\t\t\t\t...attributes,\n\t\t\t\t\t\t\ttext: value,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\tidentifier=\"text\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t{ ! isURLSet && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\ticon={ link }\n\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\tonClick={ startEditing }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isURLSet && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\ttitle={ __( 'Unlink' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primaryShift( 'k' ) }\n\t\t\t\t\t\tonClick={ unlink }\n\t\t\t\t\t\tisActive={ true }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t{ isSelected && ( isEditingURL || isURLSet ) && (\n\t\t\t\t<Popover\n\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsEditingURL( false );\n\t\t\t\t\t\trichTextRef.current?.focus();\n\t\t\t\t\t} }\n\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\tfocusOnMount={ isEditingURL ? 'firstElement' : false }\n\t\t\t\t\t__unstableSlotName={ '__unstable-block-tools-after' }\n\t\t\t\t\tshift\n\t\t\t\t>\n\t\t\t\t\t<LinkControl\n\t\t\t\t\t\tclassName=\"wp-block-navigation-link__inline-link-input\"\n\t\t\t\t\t\tvalue={ { url, opensInNewTab } }\n\t\t\t\t\t\tonChange={ ( {\n\t\t\t\t\t\t\turl: newURL = '',\n\t\t\t\t\t\t\topensInNewTab: newOpensInNewTab,\n\t\t\t\t\t\t} ) => {\n\t\t\t\t\t\t\tsetAttributes( { url: newURL } );\n\n\t\t\t\t\t\t\tif ( opensInNewTab !== newOpensInNewTab ) {\n\t\t\t\t\t\t\t\tonToggleOpenInNewTab( newOpensInNewTab );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\tunlink();\n\t\t\t\t\t\t\trichTextRef.current?.focus();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tforceIsEditingLink={ isEditingURL }\n\t\t\t\t\t/>\n\t\t\t\t</Popover>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<WidthPanel\n\t\t\t\t\tselectedWidth={ width }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\tonChange={ onSetLinkRel }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n}\n\nexport default ButtonEdit;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { button 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';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tclassName: 'is-style-fill',\n\t\t\ttext: __( 'Call to Action' ),\n\t\t},\n\t},\n\tedit,\n\tsave,\n\tdeprecated,\n\tmerge: ( a, { text = '' } ) => ( {\n\t\t...a,\n\t\ttext: ( a.text || '' ) + text,\n\t} ),\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes, className } ) {\n\tconst { fontSize, linkTarget, rel, style, text, title, url, width } =\n\t\tattributes;\n\n\tif ( ! text ) {\n\t\treturn null;\n\t}\n\n\tconst borderProps = getBorderClassesAndStyles( attributes );\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\tconst buttonClasses = classnames(\n\t\t'wp-block-button__link',\n\t\tcolorProps.className,\n\t\tborderProps.className,\n\t\t{\n\t\t\t// For backwards compatibility add style that isn't provided via\n\t\t\t// block support.\n\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t},\n\t\t__experimentalGetElementClassName( 'button' )\n\t);\n\tconst buttonStyle = {\n\t\t...borderProps.style,\n\t\t...colorProps.style,\n\t\t...spacingProps.style,\n\t};\n\n\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t// if it had already been assigned, for the sake of backward-compatibility.\n\t// A title will no longer be assigned for new or updated button block links.\n\n\tconst wrapperClasses = classnames( className, {\n\t\t[ `has-custom-width wp-block-button__width-${ width }` ]: width,\n\t\t[ `has-custom-font-size` ]: fontSize || style?.typography?.fontSize,\n\t} );\n\n\treturn (\n\t\t<div { ...useBlockProps.save( { className: wrapperClasses } ) }>\n\t\t\t<RichText.Content\n\t\t\t\ttagName=\"a\"\n\t\t\t\tclassName={ buttonClasses }\n\t\t\t\thref={ url }\n\t\t\t\ttitle={ title }\n\t\t\t\tstyle={ buttonStyle }\n\t\t\t\tvalue={ text }\n\t\t\t\ttarget={ linkTarget }\n\t\t\t\trel={ rel }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst buttons = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M17 3H7c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 6c0 .3-.2.5-.5.5H7c-.3 0-.5-.2-.5-.5V5c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v4zm-8-1.2h5V6.2h-5v1.6zM17 13H7c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2zm.5 6c0 .3-.2.5-.5.5H7c-.3 0-.5-.2-.5-.5v-4c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v4zm-8-1.2h5v-1.5h-5v1.5z\" />\n\t</SVG>\n);\n\nexport default buttons;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n/**\n * WordPress dependencies\n */\nimport { InnerBlocks, useBlockProps } from '@wordpress/block-editor';\n\n/**\n * @param {Object} attributes Block's attributes.\n */\nconst migrateWithLayout = ( attributes ) => {\n\tif ( !! attributes.layout ) {\n\t\treturn attributes;\n\t}\n\n\tconst { contentJustification, orientation, ...updatedAttributes } =\n\t\tattributes;\n\n\tif ( contentJustification || orientation ) {\n\t\tObject.assign( updatedAttributes, {\n\t\t\tlayout: {\n\t\t\t\ttype: 'flex',\n\t\t\t\t...( contentJustification && {\n\t\t\t\t\tjustifyContent: contentJustification,\n\t\t\t\t} ),\n\t\t\t\t...( orientation && { orientation } ),\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn updatedAttributes;\n};\n\nconst deprecated = [\n\t{\n\t\tattributes: {\n\t\t\tcontentJustification: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\torientation: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'horizontal',\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\tanchor: true,\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\t__experimentalExposeControlsToChildren: true,\n\t\t\tspacing: {\n\t\t\t\tblockGap: true,\n\t\t\t\tmargin: [ 'top', 'bottom' ],\n\t\t\t\t__experimentalDefaultControls: {\n\t\t\t\t\tblockGap: true,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tisEligible: ( { contentJustification, orientation } ) =>\n\t\t\t!! contentJustification || !! orientation,\n\t\tmigrate: migrateWithLayout,\n\t\tsave( { attributes: { contentJustification, orientation } } ) {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\t{ ...useBlockProps.save( {\n\t\t\t\t\t\tclassName: classnames( {\n\t\t\t\t\t\t\t[ `is-content-justification-${ contentJustification }` ]:\n\t\t\t\t\t\t\t\tcontentJustification,\n\t\t\t\t\t\t\t'is-vertical': orientation === 'vertical',\n\t\t\t\t\t\t} ),\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tsupports: {\n\t\t\talign: [ 'center', 'left', 'right' ],\n\t\t\tanchor: true,\n\t\t},\n\t\tsave() {\n\t\t\treturn (\n\t\t\t\t<div>\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\tisEligible( { align } ) {\n\t\t\treturn align && [ 'center', 'left', 'right' ].includes( align );\n\t\t},\n\t\tmigrate( attributes ) {\n\t\t\treturn migrateWithLayout( {\n\t\t\t\t...attributes,\n\t\t\t\talign: undefined,\n\t\t\t\t// Floating Buttons blocks shouldn't have been supported in the\n\t\t\t\t// first place. Most users using them probably expected them to\n\t\t\t\t// act like content justification controls, so these blocks are\n\t\t\t\t// migrated to use content justification.\n\t\t\t\t// As for center-aligned Buttons blocks, the content justification\n\t\t\t\t// equivalent will create an identical end result in most cases.\n\t\t\t\tcontentJustification: attributes.align,\n\t\t\t} );\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"richText\"];","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { __unstableCreateElement as createElement } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ 'core/button' ],\n\t\t\ttransform: ( buttons ) =>\n\t\t\t\t// Creates the buttons block.\n\t\t\t\tcreateBlock(\n\t\t\t\t\tname,\n\t\t\t\t\t{},\n\t\t\t\t\t// Loop the selected buttons.\n\t\t\t\t\tbuttons.map( ( attributes ) =>\n\t\t\t\t\t\t// Create singular button in the buttons block.\n\t\t\t\t\t\tcreateBlock( 'core/button', attributes )\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ 'core/paragraph' ],\n\t\t\ttransform: ( buttons ) =>\n\t\t\t\t// Creates the buttons block.\n\t\t\t\tcreateBlock(\n\t\t\t\t\tname,\n\t\t\t\t\t{},\n\t\t\t\t\t// Loop the selected buttons.\n\t\t\t\t\tbuttons.map( ( attributes ) => {\n\t\t\t\t\t\tconst element = createElement(\n\t\t\t\t\t\t\tdocument,\n\t\t\t\t\t\t\tattributes.content\n\t\t\t\t\t\t);\n\t\t\t\t\t\t// Remove any HTML tags.\n\t\t\t\t\t\tconst text = element.innerText || '';\n\t\t\t\t\t\t// Get first url.\n\t\t\t\t\t\tconst link = element.querySelector( 'a' );\n\t\t\t\t\t\tconst url = link?.getAttribute( 'href' );\n\t\t\t\t\t\t// Create singular button in the buttons block.\n\t\t\t\t\t\treturn createBlock( 'core/button', {\n\t\t\t\t\t\t\ttext,\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )\n\t\t\t\t),\n\t\t\tisMatch: ( paragraphs ) => {\n\t\t\t\treturn paragraphs.every( ( attributes ) => {\n\t\t\t\t\tconst element = createElement(\n\t\t\t\t\t\tdocument,\n\t\t\t\t\t\tattributes.content\n\t\t\t\t\t);\n\t\t\t\t\tconst text = element.innerText || '';\n\t\t\t\t\tconst links = element.querySelectorAll( 'a' );\n\t\t\t\t\treturn text.length <= 30 && links.length <= 1;\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { name as buttonBlockName } from '../button';\n\nconst ALLOWED_BLOCKS = [ buttonBlockName ];\n\nconst DEFAULT_BLOCK = {\n\tname: buttonBlockName,\n\tattributesToCopy: [\n\t\t'backgroundColor',\n\t\t'border',\n\t\t'className',\n\t\t'fontFamily',\n\t\t'fontSize',\n\t\t'gradient',\n\t\t'style',\n\t\t'textColor',\n\t\t'width',\n\t],\n};\n\nfunction ButtonsEdit( { attributes, className } ) {\n\tconst { fontSize, layout = {}, style } = attributes;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( className, {\n\t\t\t'has-custom-font-size': fontSize || style?.typography?.fontSize,\n\t\t} ),\n\t} );\n\tconst preferredStyle = useSelect( ( select ) => {\n\t\tconst preferredStyleVariations =\n\t\t\tselect( blockEditorStore ).getSettings()\n\t\t\t\t.__experimentalPreferredStyleVariations;\n\t\treturn preferredStyleVariations?.value?.[ buttonBlockName ];\n\t}, [] );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t__experimentalDirectInsert: true,\n\t\ttemplate: [\n\t\t\t[\n\t\t\t\tbuttonBlockName,\n\t\t\t\t{ className: preferredStyle && `is-style-${ preferredStyle }` },\n\t\t\t],\n\t\t],\n\t\t__experimentalLayout: layout,\n\t\ttemplateInsertUpdatesSelection: true,\n\t} );\n\n\treturn <div { ...innerBlocksProps } />;\n}\n\nexport default ButtonsEdit;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { buttons as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport transforms from './transforms';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/button',\n\t\t\t\tattributes: { text: __( 'Find out more' ) },\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/button',\n\t\t\t\tattributes: { text: __( 'Contact us' ) },\n\t\t\t},\n\t\t],\n\t},\n\tdeprecated,\n\ttransforms,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes, className } ) {\n\tconst { fontSize, style } = attributes;\n\tconst blockProps = useBlockProps.save( {\n\t\tclassName: classnames( className, {\n\t\t\t'has-custom-font-size': fontSize || style?.typography?.fontSize,\n\t\t} ),\n\t} );\n\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\treturn <div { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst calendar = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7h15v12zM9 10H7v2h2v-2zm0 4H7v2h2v-2zm4-4h-2v2h2v-2zm4 0h-2v2h2v-2zm-4 4h-2v2h2v-2zm4 0h-2v2h2v-2z\" />\n\t</SVG>\n);\n\nexport default calendar;\n","/**\n * External dependencies\n */\nimport memoize from 'memize';\n\n/**\n * WordPress dependencies\n */\nimport { calendar as icon } from '@wordpress/icons';\nimport { Disabled, Placeholder, Spinner } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport ServerSideRender from '@wordpress/server-side-render';\nimport { useBlockProps } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Returns the year and month of a specified date.\n *\n * @see `WP_REST_Posts_Controller::prepare_date_response()`.\n *\n * @param {string} date Date in `ISO8601/RFC3339` format.\n * @return {Object} Year and date of the specified date.\n */\nconst getYearMonth = memoize( ( date ) => {\n\tif ( ! date ) {\n\t\treturn {};\n\t}\n\tconst dateObj = new Date( date );\n\treturn {\n\t\tyear: dateObj.getFullYear(),\n\t\tmonth: dateObj.getMonth() + 1,\n\t};\n} );\n\nexport default function CalendarEdit( { attributes } ) {\n\tconst blockProps = useBlockProps();\n\tconst { date, hasPosts, hasPostsResolved } = useSelect( ( select ) => {\n\t\tconst { getEntityRecords, hasFinishedResolution } = select( coreStore );\n\n\t\tconst singlePublishedPostQuery = {\n\t\t\tstatus: 'publish',\n\t\t\tper_page: 1,\n\t\t};\n\t\tconst posts = getEntityRecords(\n\t\t\t'postType',\n\t\t\t'post',\n\t\t\tsinglePublishedPostQuery\n\t\t);\n\t\tconst postsResolved = hasFinishedResolution( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\t'post',\n\t\t\tsinglePublishedPostQuery,\n\t\t] );\n\n\t\tlet _date;\n\n\t\t// FIXME: @wordpress/block-library should not depend on @wordpress/editor.\n\t\t// Blocks can be loaded into a *non-post* block editor.\n\t\t// eslint-disable-next-line @wordpress/data-no-store-string-literals\n\t\tconst editorSelectors = select( 'core/editor' );\n\t\tif ( editorSelectors ) {\n\t\t\tconst postType = editorSelectors.getEditedPostAttribute( 'type' );\n\t\t\t// Dates are used to overwrite year and month used on the calendar.\n\t\t\t// This overwrite should only happen for 'post' post types.\n\t\t\t// For other post types the calendar always displays the current month.\n\t\t\tif ( postType === 'post' ) {\n\t\t\t\t_date = editorSelectors.getEditedPostAttribute( 'date' );\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tdate: _date,\n\t\t\thasPostsResolved: postsResolved,\n\t\t\thasPosts: postsResolved && posts?.length === 1,\n\t\t};\n\t}, [] );\n\n\tif ( ! hasPosts ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Placeholder icon={ icon } label={ __( 'Calendar' ) }>\n\t\t\t\t\t{ ! hasPostsResolved ? (\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t__( 'No published posts found.' )\n\t\t\t\t\t) }\n\t\t\t\t</Placeholder>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<Disabled>\n\t\t\t\t<ServerSideRender\n\t\t\t\t\tblock=\"core/calendar\"\n\t\t\t\t\tattributes={ { ...attributes, ...getYearMonth( date ) } }\n\t\t\t\t/>\n\t\t\t</Disabled>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/archives' ],\n\t\t\ttransform: () => createBlock( 'core/calendar' ),\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/archives' ],\n\t\t\ttransform: () => createBlock( 'core/archives' ),\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { calendar 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 transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {},\n\tedit,\n\ttransforms,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst category = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\td=\"M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z\"\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t</SVG>\n);\n\nexport default category;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst pin = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"m21.5 9.1-6.6-6.6-4.2 5.6c-1.2-.1-2.4.1-3.6.7-.1 0-.1.1-.2.1-.5.3-.9.6-1.2.9l3.7 3.7-5.7 5.7v1.1h1.1l5.7-5.7 3.7 3.7c.4-.4.7-.8.9-1.2.1-.1.1-.2.2-.3.6-1.1.8-2.4.6-3.6l5.6-4.1zm-7.3 3.5.1.9c.1.9 0 1.8-.4 2.6l-6-6c.8-.4 1.7-.5 2.6-.4l.9.1L15 4.9 19.1 9l-4.9 3.6z\" />\n\t</SVG>\n);\n\nexport default pin;\n","/**\n * WordPress dependencies\n */\nimport { category 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;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {},\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport { unescape } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tPlaceholder,\n\tSpinner,\n\tToggleControl,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { InspectorControls, useBlockProps } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { pin } from '@wordpress/icons';\nimport { useEntityRecords } from '@wordpress/core-data';\n\nexport default function CategoriesEdit( {\n\tattributes: {\n\t\tdisplayAsDropdown,\n\t\tshowHierarchy,\n\t\tshowPostCounts,\n\t\tshowOnlyTopLevel,\n\t\tshowEmpty,\n\t},\n\tsetAttributes,\n\tclassName,\n} ) {\n\tconst selectId = useInstanceId( CategoriesEdit, 'blocks-category-select' );\n\tconst query = { per_page: -1, hide_empty: ! showEmpty, context: 'view' };\n\tif ( showOnlyTopLevel ) {\n\t\tquery.parent = 0;\n\t}\n\n\tconst { records: categories, isResolving } = useEntityRecords(\n\t\t'taxonomy',\n\t\t'category',\n\t\tquery\n\t);\n\n\tconst getCategoriesList = ( parentId ) => {\n\t\tif ( ! categories?.length ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( parentId === null ) {\n\t\t\treturn categories;\n\t\t}\n\t\treturn categories.filter( ( { parent } ) => parent === parentId );\n\t};\n\n\tconst toggleAttribute = ( attributeName ) => ( newValue ) =>\n\t\tsetAttributes( { [ attributeName ]: newValue } );\n\n\tconst renderCategoryName = ( name ) =>\n\t\t! name ? __( '(Untitled)' ) : unescape( name ).trim();\n\n\tconst renderCategoryList = () => {\n\t\tconst parentId = showHierarchy ? 0 : null;\n\t\tconst categoriesList = getCategoriesList( parentId );\n\t\treturn categoriesList.map( ( category ) =>\n\t\t\trenderCategoryListItem( category, 0 )\n\t\t);\n\t};\n\n\tconst renderCategoryListItem = ( category ) => {\n\t\tconst childCategories = getCategoriesList( category.id );\n\t\tconst { id, link, count, name } = category;\n\t\treturn (\n\t\t\t<li key={ id } className={ `cat-item cat-item-${ id }` }>\n\t\t\t\t<a href={ link } target=\"_blank\" rel=\"noreferrer noopener\">\n\t\t\t\t\t{ renderCategoryName( name ) }\n\t\t\t\t</a>\n\t\t\t\t{ showPostCounts && ` (${ count })` }\n\t\t\t\t{ showHierarchy && !! childCategories.length && (\n\t\t\t\t\t<ul className=\"children\">\n\t\t\t\t\t\t{ childCategories.map( ( childCategory ) =>\n\t\t\t\t\t\t\trenderCategoryListItem( childCategory )\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ul>\n\t\t\t\t) }\n\t\t\t</li>\n\t\t);\n\t};\n\n\tconst renderCategoryDropdown = () => {\n\t\tconst parentId = showHierarchy ? 0 : null;\n\t\tconst categoriesList = getCategoriesList( parentId );\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<VisuallyHidden as=\"label\" htmlFor={ selectId }>\n\t\t\t\t\t{ __( 'Categories' ) }\n\t\t\t\t</VisuallyHidden>\n\t\t\t\t<select id={ selectId }>\n\t\t\t\t\t<option>{ __( 'Select Category' ) }</option>\n\t\t\t\t\t{ categoriesList.map( ( category ) =>\n\t\t\t\t\t\trenderCategoryDropdownItem( category, 0 )\n\t\t\t\t\t) }\n\t\t\t\t</select>\n\t\t\t</>\n\t\t);\n\t};\n\n\tconst renderCategoryDropdownItem = ( category, level ) => {\n\t\tconst { id, count, name } = category;\n\t\tconst childCategories = getCategoriesList( id );\n\t\treturn [\n\t\t\t<option key={ id } className={ `level-${ level }` }>\n\t\t\t\t{ Array.from( { length: level * 3 } ).map( () => '\\xa0' ) }\n\t\t\t\t{ renderCategoryName( name ) }\n\t\t\t\t{ showPostCounts && ` (${ count })` }\n\t\t\t</option>,\n\t\t\tshowHierarchy &&\n\t\t\t\t!! childCategories.length &&\n\t\t\t\tchildCategories.map( ( childCategory ) =>\n\t\t\t\t\trenderCategoryDropdownItem( childCategory, level + 1 )\n\t\t\t\t),\n\t\t];\n\t};\n\n\tconst TagName =\n\t\t!! categories?.length && ! displayAsDropdown && ! isResolving\n\t\t\t? 'ul'\n\t\t\t: 'div';\n\n\tconst classes = classnames( className, {\n\t\t'wp-block-categories-list':\n\t\t\t!! categories?.length && ! displayAsDropdown && ! isResolving,\n\t\t'wp-block-categories-dropdown':\n\t\t\t!! categories?.length && displayAsDropdown && ! isResolving,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\treturn (\n\t\t<TagName { ...blockProps }>\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\tlabel={ __( 'Display as dropdown' ) }\n\t\t\t\t\t\tchecked={ displayAsDropdown }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'displayAsDropdown' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Show post counts' ) }\n\t\t\t\t\t\tchecked={ showPostCounts }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'showPostCounts' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Show only top level categories' ) }\n\t\t\t\t\t\tchecked={ showOnlyTopLevel }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'showOnlyTopLevel' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Show empty categories' ) }\n\t\t\t\t\t\tchecked={ showEmpty }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'showEmpty' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! showOnlyTopLevel && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Show hierarchy' ) }\n\t\t\t\t\t\t\tchecked={ showHierarchy }\n\t\t\t\t\t\t\tonChange={ toggleAttribute( 'showHierarchy' ) }\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\t{ isResolving && (\n\t\t\t\t<Placeholder icon={ pin } label={ __( 'Categories' ) }>\n\t\t\t\t\t<Spinner />\n\t\t\t\t</Placeholder>\n\t\t\t) }\n\t\t\t{ ! isResolving && categories?.length === 0 && (\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Your site does not have any posts, so there is nothing to display here at the moment.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t) }\n\t\t\t{ ! isResolving &&\n\t\t\t\tcategories?.length > 0 &&\n\t\t\t\t( displayAsDropdown\n\t\t\t\t\t? renderCategoryDropdown()\n\t\t\t\t\t: renderCategoryList() ) }\n\t\t</TagName>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst classic = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M20 6H4c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5H4c-.3 0-.5-.2-.5-.5V8c0-.3.2-.5.5-.5h16c.3 0 .5.2.5.5v9zM10 10H8v2h2v-2zm-5 2h2v-2H5v2zm8-2h-2v2h2v-2zm-5 6h8v-2H8v2zm6-4h2v-2h-2v2zm3 0h2v-2h-2v2zm0 4h2v-2h-2v2zM5 16h2v-2H5v2z\" />\n\t</SVG>\n);\n\nexport default classic;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarButton } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { rawHandler, serialize } from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\nconst ConvertToBlocksButton = ( { clientId } ) => {\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\tconst block = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( blockEditorStore ).getBlock( clientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tonClick={ () =>\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tblock.clientId,\n\t\t\t\t\trawHandler( { HTML: serialize( block ) } )\n\t\t\t\t)\n\t\t\t}\n\t\t>\n\t\t\t{ __( 'Convert to blocks' ) }\n\t\t</ToolbarButton>\n\t);\n};\n\nexport default ConvertToBlocksButton;\n","/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { debounce } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { ToolbarGroup } from '@wordpress/components';\nimport { useEffect, useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { BACKSPACE, DELETE, F10, isKeyboardEvent } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport ConvertToBlocksButton from './convert-to-blocks-button';\n\nconst { wp } = window;\n\nfunction isTmceEmpty( editor ) {\n\t// When tinyMce is empty the content seems to be:\n\t// <p><br data-mce-bogus=\"1\"></p>\n\t// avoid expensive checks for large documents\n\tconst body = editor.getBody();\n\tif ( body.childNodes.length > 1 ) {\n\t\treturn false;\n\t} else if ( body.childNodes.length === 0 ) {\n\t\treturn true;\n\t}\n\tif ( body.childNodes[ 0 ].childNodes.length > 1 ) {\n\t\treturn false;\n\t}\n\treturn /^\\n?$/.test( body.innerText || body.textContent );\n}\n\nexport default function ClassicEdit( {\n\tclientId,\n\tattributes: { content },\n\tsetAttributes,\n\tonReplace,\n} ) {\n\tconst { getMultiSelectedBlockClientIds } = useSelect( blockEditorStore );\n\tconst canRemove = useSelect(\n\t\t( select ) => select( blockEditorStore ).canRemoveBlock( clientId ),\n\t\t[ clientId ]\n\t);\n\tconst didMount = useRef( false );\n\n\tuseEffect( () => {\n\t\tif ( ! didMount.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst editor = window.tinymce.get( `editor-${ clientId }` );\n\t\tconst currentContent = editor?.getContent();\n\n\t\tif ( currentContent !== content ) {\n\t\t\teditor.setContent( content || '' );\n\t\t}\n\t}, [ content ] );\n\n\tuseEffect( () => {\n\t\tconst { baseURL, suffix } = window.wpEditorL10n.tinymce;\n\n\t\tdidMount.current = true;\n\n\t\twindow.tinymce.EditorManager.overrideDefaults( {\n\t\t\tbase_url: baseURL,\n\t\t\tsuffix,\n\t\t} );\n\n\t\tfunction onSetup( editor ) {\n\t\t\tlet bookmark;\n\n\t\t\tif ( content ) {\n\t\t\t\teditor.on( 'loadContent', () => editor.setContent( content ) );\n\t\t\t}\n\n\t\t\teditor.on( 'blur', () => {\n\t\t\t\tbookmark = editor.selection.getBookmark( 2, true );\n\t\t\t\t// There is an issue with Chrome and the editor.focus call in core at https://core.trac.wordpress.org/browser/trunk/src/js/_enqueues/lib/link.js#L451.\n\t\t\t\t// This causes a scroll to the top of editor content on return from some content updating dialogs so tracking\n\t\t\t\t// scroll position until this is fixed in core.\n\t\t\t\tconst scrollContainer = document.querySelector(\n\t\t\t\t\t'.interface-interface-skeleton__content'\n\t\t\t\t);\n\t\t\t\tconst scrollPosition = scrollContainer.scrollTop;\n\n\t\t\t\t// Only update attributes if we aren't multi-selecting blocks.\n\t\t\t\t// Updating during multi-selection can overwrite attributes of other blocks.\n\t\t\t\tif ( ! getMultiSelectedBlockClientIds()?.length ) {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: editor.getContent(),\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\teditor.once( 'focus', () => {\n\t\t\t\t\tif ( bookmark ) {\n\t\t\t\t\t\teditor.selection.moveToBookmark( bookmark );\n\t\t\t\t\t\tif ( scrollContainer.scrollTop !== scrollPosition ) {\n\t\t\t\t\t\t\tscrollContainer.scrollTop = scrollPosition;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\treturn false;\n\t\t\t} );\n\n\t\t\teditor.on( 'mousedown touchstart', () => {\n\t\t\t\tbookmark = null;\n\t\t\t} );\n\n\t\t\tconst debouncedOnChange = debounce( () => {\n\t\t\t\tconst value = editor.getContent();\n\n\t\t\t\tif ( value !== editor._lastChange ) {\n\t\t\t\t\teditor._lastChange = value;\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: value,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}, 250 );\n\t\t\teditor.on( 'Paste Change input Undo Redo', debouncedOnChange );\n\n\t\t\t// We need to cancel the debounce call because when we remove\n\t\t\t// the editor (onUnmount) this callback is executed in\n\t\t\t// another tick. This results in setting the content to empty.\n\t\t\teditor.on( 'remove', debouncedOnChange.cancel );\n\n\t\t\teditor.on( 'keydown', ( event ) => {\n\t\t\t\tif ( isKeyboardEvent.primary( event, 'z' ) ) {\n\t\t\t\t\t// Prevent the gutenberg undo kicking in so TinyMCE undo stack works as expected.\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t( event.keyCode === BACKSPACE ||\n\t\t\t\t\t\tevent.keyCode === DELETE ) &&\n\t\t\t\t\tisTmceEmpty( editor )\n\t\t\t\t) {\n\t\t\t\t\t// Delete the block.\n\t\t\t\t\tonReplace( [] );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t}\n\n\t\t\t\tconst { altKey } = event;\n\t\t\t\t/*\n\t\t\t\t * Prevent Mousetrap from kicking in: TinyMCE already uses its own\n\t\t\t\t * `alt+f10` shortcut to focus its toolbar.\n\t\t\t\t */\n\t\t\t\tif ( altKey && event.keyCode === F10 ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\teditor.on( 'init', () => {\n\t\t\t\tconst rootNode = editor.getBody();\n\n\t\t\t\t// Create the toolbar by refocussing the editor.\n\t\t\t\tif ( rootNode.ownerDocument.activeElement === rootNode ) {\n\t\t\t\t\trootNode.blur();\n\t\t\t\t\teditor.focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tfunction initialize() {\n\t\t\tconst { settings } = window.wpEditorL10n.tinymce;\n\t\t\twp.oldEditor.initialize( `editor-${ clientId }`, {\n\t\t\t\ttinymce: {\n\t\t\t\t\t...settings,\n\t\t\t\t\tinline: true,\n\t\t\t\t\tcontent_css: false,\n\t\t\t\t\tfixed_toolbar_container: `#toolbar-${ clientId }`,\n\t\t\t\t\tsetup: onSetup,\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\tfunction onReadyStateChange() {\n\t\t\tif ( document.readyState === 'complete' ) {\n\t\t\t\tinitialize();\n\t\t\t}\n\t\t}\n\n\t\tif ( document.readyState === 'complete' ) {\n\t\t\tinitialize();\n\t\t} else {\n\t\t\tdocument.addEventListener( 'readystatechange', onReadyStateChange );\n\t\t}\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\n\t\t\t\t'readystatechange',\n\t\t\t\tonReadyStateChange\n\t\t\t);\n\t\t\twp.oldEditor.remove( `editor-${ clientId }` );\n\t\t};\n\t}, [] );\n\n\tfunction focus() {\n\t\tconst editor = window.tinymce.get( `editor-${ clientId }` );\n\t\tif ( editor ) {\n\t\t\teditor.focus();\n\t\t}\n\t}\n\n\tfunction onToolbarKeyDown( event ) {\n\t\t// Prevent WritingFlow from kicking in and allow arrows navigation on the toolbar.\n\t\tevent.stopPropagation();\n\t\t// Prevent Mousetrap from moving focus to the top toolbar when pressing `alt+f10` on this block toolbar.\n\t\tevent.nativeEvent.stopImmediatePropagation();\n\t}\n\n\t// Disable reasons:\n\t//\n\t// jsx-a11y/no-static-element-interactions\n\t//  - the toolbar itself is non-interactive, but must capture events\n\t//    from the KeyboardShortcuts component to stop their propagation.\n\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<>\n\t\t\t{ canRemove && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ConvertToBlocksButton clientId={ clientId } />\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<div { ...useBlockProps() }>\n\t\t\t\t<div\n\t\t\t\t\tkey=\"toolbar\"\n\t\t\t\t\tid={ `toolbar-${ clientId }` }\n\t\t\t\t\tclassName=\"block-library-classic__toolbar\"\n\t\t\t\t\tonClick={ focus }\n\t\t\t\t\tdata-placeholder={ __( 'Classic' ) }\n\t\t\t\t\tonKeyDown={ onToolbarKeyDown }\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\tkey=\"editor\"\n\t\t\t\t\tid={ `editor-${ clientId }` }\n\t\t\t\t\tclassName=\"wp-block-freeform block-library-rich-text__tinymce\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n}\n","/**\n * WordPress dependencies\n */\nimport { classic 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';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { RawHTML } from '@wordpress/element';\n\nexport default function save( { attributes } ) {\n\tconst { content } = attributes;\n\n\treturn <RawHTML>{ content }</RawHTML>;\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst code = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M20.8 10.7l-4.3-4.3-1.1 1.1 4.3 4.3c.1.1.1.3 0 .4l-4.3 4.3 1.1 1.1 4.3-4.3c.7-.8.7-1.9 0-2.6zM4.2 11.8l4.3-4.3-1-1-4.3 4.3c-.7.7-.7 1.8 0 2.5l4.3 4.3 1.1-1.1-4.3-4.3c-.2-.1-.2-.3-.1-.4z\" />\n\t</SVG>\n);\n\nexport default code;\n","/**\n * WordPress dependencies\n */\nimport { pipe } from '@wordpress/compose';\n\n/**\n * Escapes ampersands, shortcodes, and links.\n *\n * @param {string} content The content of a code block.\n * @return {string} The given content with some characters escaped.\n */\nexport function escape( content ) {\n\treturn pipe(\n\t\tescapeOpeningSquareBrackets,\n\t\tescapeProtocolInIsolatedUrls\n\t)( content || '' );\n}\n\n/**\n * Returns the given content with all opening shortcode characters converted\n * into their HTML entity counterpart (i.e. [ => &#91;). For instance, a\n * shortcode like [embed] becomes &#91;embed]\n *\n * This function replicates the escaping of HTML tags, where a tag like\n * <strong> becomes &lt;strong>.\n *\n * @param {string} content The content of a code block.\n * @return {string} The given content with its opening shortcode characters\n *                  converted into their HTML entity counterpart\n *                  (i.e. [ => &#91;)\n */\nfunction escapeOpeningSquareBrackets( content ) {\n\treturn content.replace( /\\[/g, '&#91;' );\n}\n\n/**\n * Converts the first two forward slashes of any isolated URL into their HTML\n * counterparts (i.e. // => &#47;&#47;). For instance, https://youtube.com/watch?x\n * becomes https:&#47;&#47;youtube.com/watch?x.\n *\n * An isolated URL is a URL that sits in its own line, surrounded only by spacing\n * characters.\n *\n * See https://github.com/WordPress/wordpress-develop/blob/5.1.1/src/wp-includes/class-wp-embed.php#L403\n *\n * @param {string} content The content of a code block.\n * @return {string} The given content with its ampersands converted into\n *                  their HTML entity counterpart (i.e. & => &amp;)\n */\nfunction escapeProtocolInIsolatedUrls( content ) {\n\treturn content.replace(\n\t\t/^(\\s*https?:)\\/\\/([^\\s<>\"]+\\s*)$/m,\n\t\t'$1&#47;&#47;$2'\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'enter',\n\t\t\tregExp: /^```$/,\n\t\t\ttransform: () => createBlock( 'core/code' ),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/html', 'core/paragraph' ],\n\t\t\ttransform: ( { content } ) => {\n\t\t\t\treturn createBlock( 'core/code', {\n\t\t\t\t\tcontent,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tisMatch: ( node ) =>\n\t\t\t\tnode.nodeName === 'PRE' &&\n\t\t\t\tnode.children.length === 1 &&\n\t\t\t\tnode.firstChild.nodeName === 'CODE',\n\t\t\tschema: {\n\t\t\t\tpre: {\n\t\t\t\t\tchildren: {\n\t\t\t\t\t\tcode: {\n\t\t\t\t\t\t\tchildren: {\n\t\t\t\t\t\t\t\t'#text': {},\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],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/paragraph' ],\n\t\t\ttransform: ( { content } ) => {\n\t\t\t\treturn createBlock( 'core/paragraph', { content } );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { code 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: Preserve \\n markers for line breaks\n\t\t\tcontent: __(\n\t\t\t\t'// A “block” is the abstract term used\\n// to describe units of markup that\\n// when composed together, form the\\n// content or layout of a page.\\nregisterBlockType( name, settings );'\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};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\nexport default function CodeEdit( { attributes, setAttributes, onRemove } ) {\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<pre { ...blockProps }>\n\t\t\t<RichText\n\t\t\t\ttagName=\"code\"\n\t\t\t\tvalue={ attributes.content }\n\t\t\t\tonChange={ ( content ) => setAttributes( { content } ) }\n\t\t\t\tonRemove={ onRemove }\n\t\t\t\tplaceholder={ __( 'Write code…' ) }\n\t\t\t\taria-label={ __( 'Code' ) }\n\t\t\t\tpreserveWhiteSpace\n\t\t\t\t__unstablePastePlainText\n\t\t\t/>\n\t\t</pre>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { escape } from './utils';\n\nexport default function save( { attributes } ) {\n\treturn (\n\t\t<pre { ...useBlockProps.save() }>\n\t\t\t<RichText.Content\n\t\t\t\ttagName=\"code\"\n\t\t\t\tvalue={ escape( attributes.content ) }\n\t\t\t/>\n\t\t</pre>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst column = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M19 6H6c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2h13c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zM6 17.5c-.3 0-.5-.2-.5-.5V8c0-.3.2-.5.5-.5h3v10H6zm13.5-.5c0 .3-.2.5-.5.5h-3v-10h3c.3 0 .5.2.5.5v9z\" />\n\t</SVG>\n);\n\nexport default column;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nconst deprecated = [\n\t{\n\t\tattributes: {\n\t\t\tverticalAlignment: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\twidth: {\n\t\t\t\ttype: 'number',\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 100,\n\t\t\t},\n\t\t},\n\t\tisEligible( { width } ) {\n\t\t\treturn isFinite( width );\n\t\t},\n\t\tmigrate( attributes ) {\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\twidth: `${ attributes.width }%`,\n\t\t\t};\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst { verticalAlignment, width } = attributes;\n\n\t\t\tconst wrapperClasses = classnames( {\n\t\t\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]:\n\t\t\t\t\tverticalAlignment,\n\t\t\t} );\n\n\t\t\tconst style = { flexBasis: width + '%' };\n\n\t\t\treturn (\n\t\t\t\t<div className={ wrapperClasses } style={ style }>\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { column 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';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tInnerBlocks,\n\tBlockControls,\n\tBlockVerticalAlignmentToolbar,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseSetting,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\t__experimentalUseCustomUnits as useCustomUnits,\n\tPanelBody,\n\t__experimentalUnitControl as UnitControl,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { sprintf, __ } from '@wordpress/i18n';\n\nfunction ColumnEdit( {\n\tattributes: { verticalAlignment, width, templateLock, allowedBlocks },\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst classes = classnames( 'block-core-columns', {\n\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]: verticalAlignment,\n\t} );\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t],\n\t} );\n\n\tconst { columnsIds, hasChildBlocks, rootClientId } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockOrder, getBlockRootClientId } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst rootId = getBlockRootClientId( clientId );\n\n\t\t\treturn {\n\t\t\t\thasChildBlocks: getBlockOrder( clientId ).length > 0,\n\t\t\t\trootClientId: rootId,\n\t\t\t\tcolumnsIds: getBlockOrder( rootId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tconst updateAlignment = ( value ) => {\n\t\t// Update own alignment.\n\t\tsetAttributes( { verticalAlignment: value } );\n\t\t// Reset parent Columns block.\n\t\tupdateBlockAttributes( rootClientId, {\n\t\t\tverticalAlignment: null,\n\t\t} );\n\t};\n\n\tconst widthWithUnit = Number.isFinite( width ) ? width + '%' : width;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t\tstyle: widthWithUnit ? { flexBasis: widthWithUnit } : undefined,\n\t} );\n\n\tconst columnsCount = columnsIds.length;\n\tconst currentColumnPosition = columnsIds.indexOf( clientId ) + 1;\n\n\tconst label = sprintf(\n\t\t/* translators: 1: Block label (i.e. \"Block: Column\"), 2: Position of the selected block, 3: Total number of sibling blocks of the same type */\n\t\t__( '%1$s (%2$d of %3$d)' ),\n\t\tblockProps[ 'aria-label' ],\n\t\tcurrentColumnPosition,\n\t\tcolumnsCount\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{ ...blockProps, 'aria-label': label },\n\t\t{\n\t\t\ttemplateLock,\n\t\t\tallowedBlocks,\n\t\t\trenderAppender: hasChildBlocks\n\t\t\t\t? undefined\n\t\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t\t}\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<BlockVerticalAlignmentToolbar\n\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\tvalue={ verticalAlignment }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Column settings' ) }>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\tlabelPosition=\"edge\"\n\t\t\t\t\t\t__unstableInputWidth=\"80px\"\n\t\t\t\t\t\tvalue={ width || '' }\n\t\t\t\t\t\tonChange={ ( nextWidth ) => {\n\t\t\t\t\t\t\tnextWidth =\n\t\t\t\t\t\t\t\t0 > parseFloat( nextWidth ) ? '0' : nextWidth;\n\t\t\t\t\t\t\tsetAttributes( { width: nextWidth } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n\nexport default ColumnEdit;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { verticalAlignment, width } = attributes;\n\n\tconst wrapperClasses = classnames( {\n\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]: verticalAlignment,\n\t} );\n\n\tlet style;\n\n\tif ( width && /\\d/.test( width ) ) {\n\t\t// Numbers are handled for backward compatibility as they can be still provided with templates.\n\t\tlet flexBasis = Number.isFinite( width ) ? width + '%' : width;\n\t\t// In some cases we need to round the width to a shorter float.\n\t\tif ( ! Number.isFinite( width ) && width?.endsWith( '%' ) ) {\n\t\t\tconst multiplier = 1000000000000;\n\t\t\t// Shrink the number back to a reasonable float.\n\t\t\tflexBasis =\n\t\t\t\tMath.round( Number.parseFloat( width ) * multiplier ) /\n\t\t\t\t\tmultiplier +\n\t\t\t\t'%';\n\t\t}\n\t\tstyle = { flexBasis };\n\t}\n\n\tconst blockProps = useBlockProps.save( {\n\t\tclassName: wrapperClasses,\n\t\tstyle,\n\t} );\n\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\n\treturn <div { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst columns = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 6H6c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2h13c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm-4.1 1.5v10H10v-10h4.9zM5.5 17V8c0-.3.2-.5.5-.5h2.5v10H6c-.3 0-.5-.2-.5-.5zm14 0c0 .3-.2.5-.5.5h-2.6v-10H19c.3 0 .5.2.5.5v9z\" />\n\t</SVG>\n);\n\nexport default columns;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { InnerBlocks, getColorClassName } from '@wordpress/block-editor';\n\n/**\n * Given an HTML string for a deprecated columns inner block, returns the\n * column index to which the migrated inner block should be assigned. Returns\n * undefined if the inner block was not assigned to a column.\n *\n * @param {string} originalContent Deprecated Columns inner block HTML.\n *\n * @return {?number} Column to which inner block is to be assigned.\n */\nfunction getDeprecatedLayoutColumn( originalContent ) {\n\tlet { doc } = getDeprecatedLayoutColumn;\n\tif ( ! doc ) {\n\t\tdoc = document.implementation.createHTMLDocument( '' );\n\t\tgetDeprecatedLayoutColumn.doc = doc;\n\t}\n\n\tlet columnMatch;\n\n\tdoc.body.innerHTML = originalContent;\n\tfor ( const classListItem of doc.body.firstChild.classList ) {\n\t\tif (\n\t\t\t( columnMatch = classListItem.match( /^layout-column-(\\d+)$/ ) )\n\t\t) {\n\t\t\treturn Number( columnMatch[ 1 ] ) - 1;\n\t\t}\n\t}\n}\n\nconst migrateCustomColors = ( attributes ) => {\n\tif ( ! attributes.customTextColor && ! attributes.customBackgroundColor ) {\n\t\treturn attributes;\n\t}\n\tconst style = { color: {} };\n\tif ( attributes.customTextColor ) {\n\t\tstyle.color.text = attributes.customTextColor;\n\t}\n\tif ( attributes.customBackgroundColor ) {\n\t\tstyle.color.background = attributes.customBackgroundColor;\n\t}\n\n\tconst { customTextColor, customBackgroundColor, ...restAttributes } =\n\t\tattributes;\n\n\treturn {\n\t\t...restAttributes,\n\t\tstyle,\n\t\tisStackedOnMobile: true,\n\t};\n};\n\nexport default [\n\t{\n\t\tattributes: {\n\t\t\tverticalAlignment: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tmigrate: migrateCustomColors,\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\tverticalAlignment,\n\t\t\t\tbackgroundColor,\n\t\t\t\tcustomBackgroundColor,\n\t\t\t\ttextColor,\n\t\t\t\tcustomTextColor,\n\t\t\t} = attributes;\n\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\n\t\t\tconst className = classnames( {\n\t\t\t\t'has-background': backgroundColor || customBackgroundColor,\n\t\t\t\t'has-text-color': textColor || customTextColor,\n\t\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t\t[ textClass ]: textClass,\n\t\t\t\t[ `are-vertically-aligned-${ verticalAlignment }` ]:\n\t\t\t\t\tverticalAlignment,\n\t\t\t} );\n\n\t\t\tconst style = {\n\t\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t\t? undefined\n\t\t\t\t\t: customBackgroundColor,\n\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ className ? className : undefined }\n\t\t\t\t\tstyle={ style }\n\t\t\t\t>\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tattributes: {\n\t\t\tcolumns: {\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 2,\n\t\t\t},\n\t\t},\n\t\tisEligible( attributes, innerBlocks ) {\n\t\t\t// Since isEligible is called on every valid instance of the\n\t\t\t// Columns block and a deprecation is the unlikely case due to\n\t\t\t// its subsequent migration, optimize for the `false` condition\n\t\t\t// by performing a naive, inaccurate pass at inner blocks.\n\t\t\tconst isFastPassEligible = innerBlocks.some( ( innerBlock ) =>\n\t\t\t\t/layout-column-\\d+/.test( innerBlock.originalContent )\n\t\t\t);\n\n\t\t\tif ( ! isFastPassEligible ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Only if the fast pass is considered eligible is the more\n\t\t\t// accurate, durable, slower condition performed.\n\t\t\treturn innerBlocks.some(\n\t\t\t\t( innerBlock ) =>\n\t\t\t\t\tgetDeprecatedLayoutColumn( innerBlock.originalContent ) !==\n\t\t\t\t\tundefined\n\t\t\t);\n\t\t},\n\t\tmigrate( attributes, innerBlocks ) {\n\t\t\tconst columns = innerBlocks.reduce( ( accumulator, innerBlock ) => {\n\t\t\t\tconst { originalContent } = innerBlock;\n\n\t\t\t\tlet columnIndex = getDeprecatedLayoutColumn( originalContent );\n\t\t\t\tif ( columnIndex === undefined ) {\n\t\t\t\t\tcolumnIndex = 0;\n\t\t\t\t}\n\n\t\t\t\tif ( ! accumulator[ columnIndex ] ) {\n\t\t\t\t\taccumulator[ columnIndex ] = [];\n\t\t\t\t}\n\n\t\t\t\taccumulator[ columnIndex ].push( innerBlock );\n\n\t\t\t\treturn accumulator;\n\t\t\t}, [] );\n\n\t\t\tconst migratedInnerBlocks = columns.map( ( columnBlocks ) =>\n\t\t\t\tcreateBlock( 'core/column', {}, columnBlocks )\n\t\t\t);\n\n\t\t\tconst { columns: ignoredColumns, ...restAttributes } = attributes;\n\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\t...restAttributes,\n\t\t\t\t\tisStackedOnMobile: true,\n\t\t\t\t},\n\t\t\t\tmigratedInnerBlocks,\n\t\t\t];\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst { columns } = attributes;\n\n\t\t\treturn (\n\t\t\t\t<div className={ `has-${ columns }-columns` }>\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tattributes: {\n\t\t\tcolumns: {\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 2,\n\t\t\t},\n\t\t},\n\t\tmigrate( attributes, innerBlocks ) {\n\t\t\tconst { columns, ...restAttributes } = attributes;\n\t\t\tattributes = {\n\t\t\t\t...restAttributes,\n\t\t\t\tisStackedOnMobile: true,\n\t\t\t};\n\n\t\t\treturn [ attributes, innerBlocks ];\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst { verticalAlignment, columns } = attributes;\n\n\t\t\tconst wrapperClasses = classnames( `has-${ columns }-columns`, {\n\t\t\t\t[ `are-vertically-aligned-${ verticalAlignment }` ]:\n\t\t\t\t\tverticalAlignment,\n\t\t\t} );\n\n\t\t\treturn (\n\t\t\t\t<div className={ wrapperClasses }>\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n];\n","/**\n * External dependencies\n */\nimport { merge, mapValues } from 'lodash';\n\n/**\n * Returns a column width attribute value rounded to standard precision.\n * Returns `undefined` if the value is not a valid finite number.\n *\n * @param {?number} value Raw value.\n *\n * @return {number} Value rounded to standard precision.\n */\nexport const toWidthPrecision = ( value ) => {\n\tconst unitlessValue = parseFloat( value );\n\treturn Number.isFinite( unitlessValue )\n\t\t? parseFloat( unitlessValue.toFixed( 2 ) )\n\t\t: undefined;\n};\n/**\n * Returns an effective width for a given block. An effective width is equal to\n * its attribute value if set, or a computed value assuming equal distribution.\n *\n * @param {WPBlock} block           Block object.\n * @param {number}  totalBlockCount Total number of blocks in Columns.\n *\n * @return {number} Effective column width.\n */\nexport function getEffectiveColumnWidth( block, totalBlockCount ) {\n\tconst { width = 100 / totalBlockCount } = block.attributes;\n\treturn toWidthPrecision( width );\n}\n\n/**\n * Returns the total width occupied by the given set of column blocks.\n *\n * @param {WPBlock[]} blocks          Block objects.\n * @param {?number}   totalBlockCount Total number of blocks in Columns.\n *                                    Defaults to number of blocks passed.\n *\n * @return {number} Total width occupied by blocks.\n */\nexport function getTotalColumnsWidth(\n\tblocks,\n\ttotalBlockCount = blocks.length\n) {\n\treturn blocks.reduce(\n\t\t( sum, block ) =>\n\t\t\tsum + getEffectiveColumnWidth( block, totalBlockCount ),\n\t\t0\n\t);\n}\n\n/**\n * Returns an object of `clientId` → `width` of effective column widths.\n *\n * @param {WPBlock[]} blocks          Block objects.\n * @param {?number}   totalBlockCount Total number of blocks in Columns.\n *                                    Defaults to number of blocks passed.\n *\n * @return {Object<string,number>} Column widths.\n */\nexport function getColumnWidths( blocks, totalBlockCount = blocks.length ) {\n\treturn blocks.reduce( ( accumulator, block ) => {\n\t\tconst width = getEffectiveColumnWidth( block, totalBlockCount );\n\t\treturn Object.assign( accumulator, { [ block.clientId ]: width } );\n\t}, {} );\n}\n\n/**\n * Returns an object of `clientId` → `width` of column widths as redistributed\n * proportional to their current widths, constrained or expanded to fit within\n * the given available width.\n *\n * @param {WPBlock[]} blocks          Block objects.\n * @param {number}    availableWidth  Maximum width to fit within.\n * @param {?number}   totalBlockCount Total number of blocks in Columns.\n *                                    Defaults to number of blocks passed.\n *\n * @return {Object<string,number>} Redistributed column widths.\n */\nexport function getRedistributedColumnWidths(\n\tblocks,\n\tavailableWidth,\n\ttotalBlockCount = blocks.length\n) {\n\tconst totalWidth = getTotalColumnsWidth( blocks, totalBlockCount );\n\n\treturn mapValues( getColumnWidths( blocks, totalBlockCount ), ( width ) => {\n\t\tconst newWidth = ( availableWidth * width ) / totalWidth;\n\t\treturn toWidthPrecision( newWidth );\n\t} );\n}\n\n/**\n * Returns true if column blocks within the provided set are assigned with\n * explicit widths, or false otherwise.\n *\n * @param {WPBlock[]} blocks Block objects.\n *\n * @return {boolean} Whether columns have explicit widths.\n */\nexport function hasExplicitPercentColumnWidths( blocks ) {\n\treturn blocks.every( ( block ) => {\n\t\tconst blockWidth = block.attributes.width;\n\t\treturn Number.isFinite(\n\t\t\tblockWidth?.endsWith?.( '%' )\n\t\t\t\t? parseFloat( blockWidth )\n\t\t\t\t: blockWidth\n\t\t);\n\t} );\n}\n\n/**\n * Returns a copy of the given set of blocks with new widths assigned from the\n * provided object of redistributed column widths.\n *\n * @param {WPBlock[]}             blocks Block objects.\n * @param {Object<string,number>} widths Redistributed column widths.\n *\n * @return {WPBlock[]} blocks Mapped block objects.\n */\nexport function getMappedColumnWidths( blocks, widths ) {\n\treturn blocks.map( ( block ) =>\n\t\tmerge( {}, block, {\n\t\t\tattributes: {\n\t\t\t\twidth: `${ widths[ block.clientId ] }%`,\n\t\t\t},\n\t\t} )\n\t);\n}\n\n/**\n * Returns an array with columns widths values, parsed or no depends on `withParsing` flag.\n *\n * @param {WPBlock[]} blocks      Block objects.\n * @param {?boolean}  withParsing Whether value has to be parsed.\n *\n * @return {Array<number,string>} Column widths.\n */\nexport function getWidths( blocks, withParsing = true ) {\n\treturn blocks.map( ( innerColumn ) => {\n\t\tconst innerColumnWidth =\n\t\t\tinnerColumn.attributes.width || 100 / blocks.length;\n\n\t\treturn withParsing ? parseFloat( innerColumnWidth ) : innerColumnWidth;\n\t} );\n}\n\n/**\n * Returns a column width with unit.\n *\n * @param {string} width Column width.\n * @param {string} unit  Column width unit.\n *\n * @return {string} Column width with unit.\n */\nexport function getWidthWithUnit( width, unit ) {\n\twidth = 0 > parseFloat( width ) ? '0' : width;\n\n\tif ( isPercentageUnit( unit ) ) {\n\t\twidth = Math.min( width, 100 );\n\t}\n\n\treturn `${ width }${ unit }`;\n}\n\n/**\n * Returns a boolean whether passed unit is percentage\n *\n * @param {string} unit Column width unit.\n *\n * @return {boolean} \tWhether unit is '%'.\n */\nexport function isPercentageUnit( unit ) {\n\treturn unit === '%';\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tNotice,\n\tPanelBody,\n\tRangeControl,\n\tToggleControl,\n} from '@wordpress/components';\n\nimport {\n\tInspectorControls,\n\tuseInnerBlocksProps,\n\tBlockControls,\n\tBlockVerticalAlignmentToolbar,\n\t__experimentalBlockVariationPicker,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { withDispatch, useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport {\n\thasExplicitPercentColumnWidths,\n\tgetMappedColumnWidths,\n\tgetRedistributedColumnWidths,\n\ttoWidthPrecision,\n} from './utils';\n\n/**\n * Allowed blocks constant is passed to InnerBlocks precisely as specified here.\n * The contents of the array should never change.\n * The array should contain the name of each block that is allowed.\n * In columns block, the only block we allow is 'core/column'.\n *\n * @constant\n * @type {string[]}\n */\nconst ALLOWED_BLOCKS = [ 'core/column' ];\n\nfunction ColumnsEditContainer( {\n\tattributes,\n\tsetAttributes,\n\tupdateAlignment,\n\tupdateColumns,\n\tclientId,\n} ) {\n\tconst { isStackedOnMobile, verticalAlignment } = attributes;\n\n\tconst { count } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tcount: select( blockEditorStore ).getBlockCount( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst classes = classnames( {\n\t\t[ `are-vertically-aligned-${ verticalAlignment }` ]: verticalAlignment,\n\t\t[ `is-not-stacked-on-mobile` ]: ! isStackedOnMobile,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\torientation: 'horizontal',\n\t\trenderAppender: false,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<BlockVerticalAlignmentToolbar\n\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\tvalue={ verticalAlignment }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\tvalue={ count }\n\t\t\t\t\t\tonChange={ ( value ) => updateColumns( count, value ) }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\tmax={ Math.max( 6, count ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ count > 6 && (\n\t\t\t\t\t\t<Notice status=\"warning\" isDismissible={ false }>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'This column count exceeds the recommended amount and may cause visual breakage.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Notice>\n\t\t\t\t\t) }\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Stack on mobile' ) }\n\t\t\t\t\t\tchecked={ isStackedOnMobile }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tisStackedOnMobile: ! isStackedOnMobile,\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\t<div { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n\nconst ColumnsEditContainerWrapper = withDispatch(\n\t( dispatch, ownProps, registry ) => ( {\n\t\t/**\n\t\t * Update all child Column blocks with a new vertical alignment setting\n\t\t * based on whatever alignment is passed in. This allows change to parent\n\t\t * to overide anything set on a individual column basis.\n\t\t *\n\t\t * @param {string} verticalAlignment the vertical alignment setting\n\t\t */\n\t\tupdateAlignment( verticalAlignment ) {\n\t\t\tconst { clientId, setAttributes } = ownProps;\n\t\t\tconst { updateBlockAttributes } = dispatch( blockEditorStore );\n\t\t\tconst { getBlockOrder } = registry.select( blockEditorStore );\n\n\t\t\t// Update own alignment.\n\t\t\tsetAttributes( { verticalAlignment } );\n\n\t\t\t// Update all child Column Blocks to match.\n\t\t\tconst innerBlockClientIds = getBlockOrder( clientId );\n\t\t\tinnerBlockClientIds.forEach( ( innerBlockClientId ) => {\n\t\t\t\tupdateBlockAttributes( innerBlockClientId, {\n\t\t\t\t\tverticalAlignment,\n\t\t\t\t} );\n\t\t\t} );\n\t\t},\n\n\t\t/**\n\t\t * Updates the column count, including necessary revisions to child Column\n\t\t * blocks to grant required or redistribute available space.\n\t\t *\n\t\t * @param {number} previousColumns Previous column count.\n\t\t * @param {number} newColumns      New column count.\n\t\t */\n\t\tupdateColumns( previousColumns, newColumns ) {\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst { replaceInnerBlocks } = dispatch( blockEditorStore );\n\t\t\tconst { getBlocks } = registry.select( blockEditorStore );\n\n\t\t\tlet innerBlocks = getBlocks( clientId );\n\t\t\tconst hasExplicitWidths =\n\t\t\t\thasExplicitPercentColumnWidths( innerBlocks );\n\n\t\t\t// Redistribute available width for existing inner blocks.\n\t\t\tconst isAddingColumn = newColumns > previousColumns;\n\n\t\t\tif ( isAddingColumn && hasExplicitWidths ) {\n\t\t\t\t// If adding a new column, assign width to the new column equal to\n\t\t\t\t// as if it were `1 / columns` of the total available space.\n\t\t\t\tconst newColumnWidth = toWidthPrecision( 100 / newColumns );\n\n\t\t\t\t// Redistribute in consideration of pending block insertion as\n\t\t\t\t// constraining the available working width.\n\t\t\t\tconst widths = getRedistributedColumnWidths(\n\t\t\t\t\tinnerBlocks,\n\t\t\t\t\t100 - newColumnWidth\n\t\t\t\t);\n\n\t\t\t\tinnerBlocks = [\n\t\t\t\t\t...getMappedColumnWidths( innerBlocks, widths ),\n\t\t\t\t\t...Array.from( {\n\t\t\t\t\t\tlength: newColumns - previousColumns,\n\t\t\t\t\t} ).map( () => {\n\t\t\t\t\t\treturn createBlock( 'core/column', {\n\t\t\t\t\t\t\twidth: `${ newColumnWidth }%`,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} ),\n\t\t\t\t];\n\t\t\t} else if ( isAddingColumn ) {\n\t\t\t\tinnerBlocks = [\n\t\t\t\t\t...innerBlocks,\n\t\t\t\t\t...Array.from( {\n\t\t\t\t\t\tlength: newColumns - previousColumns,\n\t\t\t\t\t} ).map( () => {\n\t\t\t\t\t\treturn createBlock( 'core/column' );\n\t\t\t\t\t} ),\n\t\t\t\t];\n\t\t\t} else {\n\t\t\t\t// The removed column will be the last of the inner blocks.\n\t\t\t\tinnerBlocks = innerBlocks.slice(\n\t\t\t\t\t0,\n\t\t\t\t\t-( previousColumns - newColumns )\n\t\t\t\t);\n\n\t\t\t\tif ( hasExplicitWidths ) {\n\t\t\t\t\t// Redistribute as if block is already removed.\n\t\t\t\t\tconst widths = getRedistributedColumnWidths(\n\t\t\t\t\t\tinnerBlocks,\n\t\t\t\t\t\t100\n\t\t\t\t\t);\n\n\t\t\t\t\tinnerBlocks = getMappedColumnWidths( innerBlocks, widths );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treplaceInnerBlocks( clientId, innerBlocks );\n\t\t},\n\t} )\n)( ColumnsEditContainer );\n\nfunction Placeholder( { clientId, name, setAttributes } ) {\n\tconst { blockType, defaultVariation, variations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockVariations,\n\t\t\t\tgetBlockType,\n\t\t\t\tgetDefaultBlockVariation,\n\t\t\t} = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tblockType: getBlockType( name ),\n\t\t\t\tdefaultVariation: getDefaultBlockVariation( name, 'block' ),\n\t\t\t\tvariations: getBlockVariations( name, 'block' ),\n\t\t\t};\n\t\t},\n\t\t[ name ]\n\t);\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst blockProps = useBlockProps();\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<__experimentalBlockVariationPicker\n\t\t\t\ticon={ get( blockType, [ 'icon', 'src' ] ) }\n\t\t\t\tlabel={ get( blockType, [ 'title' ] ) }\n\t\t\t\tvariations={ variations }\n\t\t\t\tonSelect={ ( nextVariation = defaultVariation ) => {\n\t\t\t\t\tif ( nextVariation.attributes ) {\n\t\t\t\t\t\tsetAttributes( nextVariation.attributes );\n\t\t\t\t\t}\n\t\t\t\t\tif ( nextVariation.innerBlocks ) {\n\t\t\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate(\n\t\t\t\t\t\t\t\tnextVariation.innerBlocks\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t\tallowSkip\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nconst ColumnsEdit = ( props ) => {\n\tconst { clientId } = props;\n\tconst hasInnerBlocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocks( clientId ).length > 0,\n\t\t[ clientId ]\n\t);\n\tconst Component = hasInnerBlocks\n\t\t? ColumnsEditContainerWrapper\n\t\t: Placeholder;\n\n\treturn <Component { ...props } />;\n};\n\nexport default ColumnsEdit;\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */\n\n/**\n * Template option choices for predefined columns layouts.\n *\n * @type {WPBlockVariation[]}\n */\nconst variations = [\n\t{\n\t\tname: 'one-column-full',\n\t\ttitle: __( '100' ),\n\t\tdescription: __( 'One column' ),\n\t\ticon: (\n\t\t\t<SVG\n\t\t\t\twidth=\"48\"\n\t\t\t\theight=\"48\"\n\t\t\t\tviewBox=\"0 0 48 48\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t>\n\t\t\t\t<Path\n\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\t\td=\"m39.0625 14h-30.0625v20.0938h30.0625zm-30.0625-2c-1.10457 0-2 .8954-2 2v20.0938c0 1.1045.89543 2 2 2h30.0625c1.1046 0 2-.8955 2-2v-20.0938c0-1.1046-.8954-2-2-2z\"\n\t\t\t\t/>\n\t\t\t</SVG>\n\t\t),\n\t\tinnerBlocks: [ [ 'core/column' ] ],\n\t\tscope: [ 'block' ],\n\t},\n\t{\n\t\tname: 'two-columns-equal',\n\t\ttitle: __( '50 / 50' ),\n\t\tdescription: __( 'Two columns; equal split' ),\n\t\ticon: (\n\t\t\t<SVG\n\t\t\t\twidth=\"48\"\n\t\t\t\theight=\"48\"\n\t\t\t\tviewBox=\"0 0 48 48\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t>\n\t\t\t\t<Path\n\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\t\td=\"M39 12C40.1046 12 41 12.8954 41 14V34C41 35.1046 40.1046 36 39 36H9C7.89543 36 7 35.1046 7 34V14C7 12.8954 7.89543 12 9 12H39ZM39 34V14H25V34H39ZM23 34H9V14H23V34Z\"\n\t\t\t\t/>\n\t\t\t</SVG>\n\t\t),\n\t\tisDefault: true,\n\t\tinnerBlocks: [ [ 'core/column' ], [ 'core/column' ] ],\n\t\tscope: [ 'block' ],\n\t},\n\t{\n\t\tname: 'two-columns-one-third-two-thirds',\n\t\ttitle: __( '33 / 66' ),\n\t\tdescription: __( 'Two columns; one-third, two-thirds split' ),\n\t\ticon: (\n\t\t\t<SVG\n\t\t\t\twidth=\"48\"\n\t\t\t\theight=\"48\"\n\t\t\t\tviewBox=\"0 0 48 48\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t>\n\t\t\t\t<Path\n\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\t\td=\"M39 12C40.1046 12 41 12.8954 41 14V34C41 35.1046 40.1046 36 39 36H9C7.89543 36 7 35.1046 7 34V14C7 12.8954 7.89543 12 9 12H39ZM39 34V14H20V34H39ZM18 34H9V14H18V34Z\"\n\t\t\t\t/>\n\t\t\t</SVG>\n\t\t),\n\t\tinnerBlocks: [\n\t\t\t[ 'core/column', { width: '33.33%' } ],\n\t\t\t[ 'core/column', { width: '66.66%' } ],\n\t\t],\n\t\tscope: [ 'block' ],\n\t},\n\t{\n\t\tname: 'two-columns-two-thirds-one-third',\n\t\ttitle: __( '66 / 33' ),\n\t\tdescription: __( 'Two columns; two-thirds, one-third split' ),\n\t\ticon: (\n\t\t\t<SVG\n\t\t\t\twidth=\"48\"\n\t\t\t\theight=\"48\"\n\t\t\t\tviewBox=\"0 0 48 48\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t>\n\t\t\t\t<Path\n\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\t\td=\"M39 12C40.1046 12 41 12.8954 41 14V34C41 35.1046 40.1046 36 39 36H9C7.89543 36 7 35.1046 7 34V14C7 12.8954 7.89543 12 9 12H39ZM39 34V14H30V34H39ZM28 34H9V14H28V34Z\"\n\t\t\t\t/>\n\t\t\t</SVG>\n\t\t),\n\t\tinnerBlocks: [\n\t\t\t[ 'core/column', { width: '66.66%' } ],\n\t\t\t[ 'core/column', { width: '33.33%' } ],\n\t\t],\n\t\tscope: [ 'block' ],\n\t},\n\t{\n\t\tname: 'three-columns-equal',\n\t\ttitle: __( '33 / 33 / 33' ),\n\t\tdescription: __( 'Three columns; equal split' ),\n\t\ticon: (\n\t\t\t<SVG\n\t\t\t\twidth=\"48\"\n\t\t\t\theight=\"48\"\n\t\t\t\tviewBox=\"0 0 48 48\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t>\n\t\t\t\t<Path\n\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\td=\"M41 14a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h30a2 2 0 0 0 2-2V14zM28.5 34h-9V14h9v20zm2 0V14H39v20h-8.5zm-13 0H9V14h8.5v20z\"\n\t\t\t\t/>\n\t\t\t</SVG>\n\t\t),\n\t\tinnerBlocks: [\n\t\t\t[ 'core/column' ],\n\t\t\t[ 'core/column' ],\n\t\t\t[ 'core/column' ],\n\t\t],\n\t\tscope: [ 'block' ],\n\t},\n\t{\n\t\tname: 'three-columns-wider-center',\n\t\ttitle: __( '25 / 50 / 25' ),\n\t\tdescription: __( 'Three columns; wide center column' ),\n\t\ticon: (\n\t\t\t<SVG\n\t\t\t\twidth=\"48\"\n\t\t\t\theight=\"48\"\n\t\t\t\tviewBox=\"0 0 48 48\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t>\n\t\t\t\t<Path\n\t\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\t\td=\"M41 14a2 2 0 0 0-2-2H9a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h30a2 2 0 0 0 2-2V14zM31 34H17V14h14v20zm2 0V14h6v20h-6zm-18 0H9V14h6v20z\"\n\t\t\t\t/>\n\t\t\t</SVG>\n\t\t),\n\t\tinnerBlocks: [\n\t\t\t[ 'core/column', { width: '25%' } ],\n\t\t\t[ 'core/column', { width: '50%' } ],\n\t\t\t[ 'core/column', { width: '25%' } ],\n\t\t],\n\t\tscope: [ 'block' ],\n\t},\n];\n\nexport default variations;\n","/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tcreateBlocksFromInnerBlocksTemplate,\n} from '@wordpress/blocks';\n\nconst MAXIMUM_SELECTED_BLOCKS = 6;\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ '*' ],\n\t\t\t__experimentalConvert: ( blocks ) => {\n\t\t\t\tconst columnWidth = +( 100 / blocks.length ).toFixed( 2 );\n\t\t\t\tconst innerBlocksTemplate = blocks.map(\n\t\t\t\t\t( { name, attributes, innerBlocks } ) => [\n\t\t\t\t\t\t'core/column',\n\t\t\t\t\t\t{ width: `${ columnWidth }%` },\n\t\t\t\t\t\t[ [ name, { ...attributes }, innerBlocks ] ],\n\t\t\t\t\t]\n\t\t\t\t);\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/columns',\n\t\t\t\t\t{},\n\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocksTemplate )\n\t\t\t\t);\n\t\t\t},\n\t\t\tisMatch: ( { length: selectedBlocksLength }, blocks ) => {\n\t\t\t\t// If a user is trying to transform a single Columns block, skip\n\t\t\t\t// the transformation. Enabling this functiontionality creates\n\t\t\t\t// nested Columns blocks resulting in an unintuitive user experience.\n\t\t\t\t// Multiple Columns blocks can still be transformed.\n\t\t\t\tif (\n\t\t\t\t\tblocks.length === 1 &&\n\t\t\t\t\tblocks[ 0 ].name === 'core/columns'\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\tselectedBlocksLength &&\n\t\t\t\t\tselectedBlocksLength <= MAXIMUM_SELECTED_BLOCKS\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/media-text' ],\n\t\t\tpriority: 1,\n\t\t\ttransform: ( attributes, innerBlocks ) => {\n\t\t\t\tconst {\n\t\t\t\t\talign,\n\t\t\t\t\tbackgroundColor,\n\t\t\t\t\ttextColor,\n\t\t\t\t\tstyle,\n\t\t\t\t\tmediaAlt: alt,\n\t\t\t\t\tmediaId: id,\n\t\t\t\t\tmediaPosition,\n\t\t\t\t\tmediaSizeSlug: sizeSlug,\n\t\t\t\t\tmediaType,\n\t\t\t\t\tmediaUrl: url,\n\t\t\t\t\tmediaWidth,\n\t\t\t\t\tverticalAlignment,\n\t\t\t\t} = attributes;\n\t\t\t\tlet media;\n\t\t\t\tif ( mediaType === 'image' || ! mediaType ) {\n\t\t\t\t\tconst imageAttrs = { id, alt, url, sizeSlug };\n\t\t\t\t\tconst linkAttrs = {\n\t\t\t\t\t\thref: attributes.href,\n\t\t\t\t\t\tlinkClass: attributes.linkClass,\n\t\t\t\t\t\tlinkDestination: attributes.linkDestination,\n\t\t\t\t\t\tlinkTarget: attributes.linkTarget,\n\t\t\t\t\t\trel: attributes.rel,\n\t\t\t\t\t};\n\t\t\t\t\tmedia = [ 'core/image', { ...imageAttrs, ...linkAttrs } ];\n\t\t\t\t} else {\n\t\t\t\t\tmedia = [ 'core/video', { id, src: url } ];\n\t\t\t\t}\n\t\t\t\tconst innerBlocksTemplate = [\n\t\t\t\t\t[ 'core/column', { width: `${ mediaWidth }%` }, [ media ] ],\n\t\t\t\t\t[\n\t\t\t\t\t\t'core/column',\n\t\t\t\t\t\t{ width: `${ 100 - mediaWidth }%` },\n\t\t\t\t\t\tinnerBlocks,\n\t\t\t\t\t],\n\t\t\t\t];\n\t\t\t\tif ( mediaPosition === 'right' ) {\n\t\t\t\t\tinnerBlocksTemplate.reverse();\n\t\t\t\t}\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/columns',\n\t\t\t\t\t{\n\t\t\t\t\t\talign,\n\t\t\t\t\t\tbackgroundColor,\n\t\t\t\t\t\ttextColor,\n\t\t\t\t\t\tstyle,\n\t\t\t\t\t\tverticalAlignment,\n\t\t\t\t\t},\n\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocksTemplate )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { columns 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 variations from './variations';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tvariations,\n\texample: {\n\t\tviewportWidth: 600, // Columns collapse \"@media (max-width: 599px)\".\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/column',\n\t\t\t\tinnerBlocks: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'core/paragraph',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t/* translators: example text. */\n\t\t\t\t\t\t\tcontent: __(\n\t\t\t\t\t\t\t\t'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent et eros eu felis.'\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\t{\n\t\t\t\t\t\tname: 'core/image',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\turl: 'https://s.w.org/images/core/5.3/Windbuchencom.jpg',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'core/paragraph',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t/* translators: example text. */\n\t\t\t\t\t\t\tcontent: __(\n\t\t\t\t\t\t\t\t'Suspendisse commodo neque lacus, a dictum orci interdum et.'\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\t{\n\t\t\t\tname: 'core/column',\n\t\t\t\tinnerBlocks: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'core/paragraph',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t/* translators: example text. */\n\t\t\t\t\t\t\tcontent: __(\n\t\t\t\t\t\t\t\t'Etiam et egestas lorem. Vivamus sagittis sit amet dolor quis lobortis. Integer sed fermentum arcu, id vulputate lacus. Etiam fermentum sem eu quam hendrerit.'\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\t{\n\t\t\t\t\t\tname: 'core/paragraph',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t/* translators: example text. */\n\t\t\t\t\t\t\tcontent: __(\n\t\t\t\t\t\t\t\t'Nam risus massa, ullamcorper consectetur eros fermentum, porta aliquet ligula. Sed vel mauris nec enim.'\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},\n\tdeprecated,\n\tedit,\n\tsave,\n\ttransforms,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { isStackedOnMobile, verticalAlignment } = attributes;\n\n\tconst className = classnames( {\n\t\t[ `are-vertically-aligned-${ verticalAlignment }` ]: verticalAlignment,\n\t\t[ `is-not-stacked-on-mobile` ]: ! isStackedOnMobile,\n\t} );\n\n\tconst blockProps = useBlockProps.save( { className } );\n\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\n\treturn <div { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst postComments = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M14 10.1V4c0-.6-.4-1-1-1H5c-.6 0-1 .4-1 1v8.3c0 .3.2.7.6.8.1.1.2.1.3.1.2 0 .5-.1.6-.3l1.8-1.8H13c.6 0 1-.4 1-1zm-1.5-.5H6.7l-1.2 1.2V4.5h7v5.1zM19 12h-8c-.6 0-1 .4-1 1v6.1c0 .6.4 1 1 1h5.7l1.8 1.8c.1.2.4.3.6.3.1 0 .2 0 .3-.1.4-.1.6-.5.6-.8V13c0-.6-.4-1-1-1zm-.5 7.8l-1.2-1.2h-5.8v-5.1h7v6.3z\" />\n\t</SVG>\n);\n\nexport default postComments;\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks, useBlockProps } from '@wordpress/block-editor';\n\n// v1: Deprecate the initial version of the block which was called \"Comments\n// Query Loop\" instead of \"Comments\".\nconst v1 = {\n\tattributes: {\n\t\ttagName: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'div',\n\t\t},\n\t},\n\tapiVersion: 2,\n\tsupports: {\n\t\talign: [ 'wide', 'full' ],\n\t\thtml: false,\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t\tlink: true,\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tbackground: true,\n\t\t\t\ttext: true,\n\t\t\t\tlink: true,\n\t\t\t},\n\t\t},\n\t},\n\tsave( { attributes: { tagName: Tag } } ) {\n\t\tconst blockProps = useBlockProps.save();\n\t\tconst { className } = blockProps;\n\t\tconst classes = className?.split( ' ' ) || [];\n\n\t\t// The ID of the previous version of the block\n\t\t// didn't have the `wp-block-comments` class,\n\t\t// so we need to remove it here in order to mimic it.\n\t\tconst newClasses = classes?.filter(\n\t\t\t( cls ) => cls !== 'wp-block-comments'\n\t\t);\n\t\tconst newBlockProps = {\n\t\t\t...blockProps,\n\t\t\tclassName: newClasses.join( ' ' ),\n\t\t};\n\n\t\treturn (\n\t\t\t<Tag { ...newBlockProps }>\n\t\t\t\t<InnerBlocks.Content />\n\t\t\t</Tag>\n\t\t);\n\t},\n};\n\nexport default [ v1 ];\n","/**\n * WordPress dependencies\n */\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { InspectorControls } from '@wordpress/block-editor';\n\nexport default function CommentsInspectorControls( {\n\tattributes: { TagName },\n\tsetAttributes,\n} ) {\n\treturn (\n\t\t<InspectorControls>\n\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t<SelectControl\n\t\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\t\toptions={ [\n\t\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t] }\n\t\t\t\t\tvalue={ TagName }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t</InspectorControls>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport {\n\tWarning,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { Button } from '@wordpress/components';\nimport { useDisabled, useInstanceId } from '@wordpress/compose';\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\nconst CommentsFormPlaceholder = () => {\n\tconst disabledFormRef = useDisabled();\n\tconst instanceId = useInstanceId( CommentsFormPlaceholder );\n\n\treturn (\n\t\t<div className=\"comment-respond\">\n\t\t\t<h3 className=\"comment-reply-title\">{ __( 'Leave a Reply' ) }</h3>\n\t\t\t<form noValidate className=\"comment-form\" ref={ disabledFormRef }>\n\t\t\t\t<p>\n\t\t\t\t\t<label htmlFor={ `comment-${ instanceId }` }>\n\t\t\t\t\t\t{ __( 'Comment' ) }\n\t\t\t\t\t</label>\n\t\t\t\t\t<textarea\n\t\t\t\t\t\tid={ `comment-${ instanceId }` }\n\t\t\t\t\t\tname=\"comment\"\n\t\t\t\t\t\tcols=\"45\"\n\t\t\t\t\t\trows=\"8\"\n\t\t\t\t\t/>\n\t\t\t\t</p>\n\t\t\t\t<p className=\"form-submit wp-block-button\">\n\t\t\t\t\t<input\n\t\t\t\t\t\tname=\"submit\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-button__link',\n\t\t\t\t\t\t\t__experimentalGetElementClassName( 'button' )\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tlabel={ __( 'Post Comment' ) }\n\t\t\t\t\t\tvalue={ __( 'Post Comment' ) }\n\t\t\t\t\t/>\n\t\t\t\t</p>\n\t\t\t</form>\n\t\t</div>\n\t);\n};\n\nconst CommentsForm = ( { postId, postType } ) => {\n\tconst [ commentStatus, setCommentStatus ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'comment_status',\n\t\tpostId\n\t);\n\n\tconst isSiteEditor = postType === undefined || postId === undefined;\n\n\tconst { defaultCommentStatus } = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings()\n\t\t\t\t.__experimentalDiscussionSettings\n\t);\n\n\tconst postTypeSupportsComments = useSelect( ( select ) =>\n\t\tpostType\n\t\t\t? !! select( coreStore ).getPostType( postType )?.supports.comments\n\t\t\t: false\n\t);\n\n\tif ( ! isSiteEditor && 'open' !== commentStatus ) {\n\t\tif ( 'closed' === commentStatus ) {\n\t\t\tconst actions = [\n\t\t\t\t<Button\n\t\t\t\t\tkey=\"enableComments\"\n\t\t\t\t\tonClick={ () => setCommentStatus( 'open' ) }\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t>\n\t\t\t\t\t{ _x(\n\t\t\t\t\t\t'Enable comments',\n\t\t\t\t\t\t'action that affects the current post'\n\t\t\t\t\t) }\n\t\t\t\t</Button>,\n\t\t\t];\n\t\t\treturn (\n\t\t\t\t<Warning actions={ actions }>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Post Comments Form block: Comments are not enabled for this item.'\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t);\n\t\t} else if ( ! postTypeSupportsComments ) {\n\t\t\treturn (\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: 1: Post type (i.e. \"post\", \"page\") */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Post Comments Form block: Comments are not enabled for this post type (%s).'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tpostType\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t);\n\t\t} else if ( 'open' !== defaultCommentStatus ) {\n\t\t\treturn (\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Post Comments Form block: Comments are not enabled.'\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t);\n\t\t}\n\t}\n\n\treturn <CommentsFormPlaceholder />;\n};\n\nexport default CommentsForm;\n","/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { useEntityProp } from '@wordpress/core-data';\nimport { useDisabled } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport CommentsForm from '../../post-comments-form/form';\n\nexport default function PostCommentsPlaceholder( { postType, postId } ) {\n\tlet [ postTitle ] = useEntityProp( 'postType', postType, 'title', postId );\n\tpostTitle = postTitle || __( 'Post Title' );\n\n\tconst { avatarURL } = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings()\n\t\t\t\t.__experimentalDiscussionSettings\n\t);\n\n\tconst disabledRef = useDisabled();\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"wp-block-comments__legacy-placeholder\"\n\t\t\tref={ disabledRef }\n\t\t>\n\t\t\t<h3>\n\t\t\t\t{\n\t\t\t\t\t/* translators: %s: Post title. */\n\t\t\t\t\tsprintf( __( 'One response to %s' ), postTitle )\n\t\t\t\t}\n\t\t\t</h3>\n\n\t\t\t<div className=\"navigation\">\n\t\t\t\t<div className=\"alignleft\">\n\t\t\t\t\t<a href=\"#top\">« { __( 'Older Comments' ) }</a>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"alignright\">\n\t\t\t\t\t<a href=\"#top\">{ __( 'Newer Comments' ) } »</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<ol className=\"commentlist\">\n\t\t\t\t<li className=\"comment even thread-even depth-1\">\n\t\t\t\t\t<article className=\"comment-body\">\n\t\t\t\t\t\t<footer className=\"comment-meta\">\n\t\t\t\t\t\t\t<div className=\"comment-author vcard\">\n\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\talt=\"Commenter Avatar\"\n\t\t\t\t\t\t\t\t\tsrc={ avatarURL }\n\t\t\t\t\t\t\t\t\tclassName=\"avatar avatar-32 photo\"\n\t\t\t\t\t\t\t\t\theight=\"32\"\n\t\t\t\t\t\t\t\t\twidth=\"32\"\n\t\t\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<b className=\"fn\">\n\t\t\t\t\t\t\t\t\t<a href=\"#top\" className=\"url\">\n\t\t\t\t\t\t\t\t\t\t{ __( 'A WordPress Commenter' ) }\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</b>{ ' ' }\n\t\t\t\t\t\t\t\t<span className=\"says\">{ __( 'says' ) }:</span>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div className=\"comment-metadata\">\n\t\t\t\t\t\t\t\t<a href=\"#top\">\n\t\t\t\t\t\t\t\t\t<time dateTime=\"2000-01-01T00:00:00+00:00\">\n\t\t\t\t\t\t\t\t\t\t{ __( 'January 1, 2000 at 00:00 am' ) }\n\t\t\t\t\t\t\t\t\t</time>\n\t\t\t\t\t\t\t\t</a>{ ' ' }\n\t\t\t\t\t\t\t\t<span className=\"edit-link\">\n\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\tclassName=\"comment-edit-link\"\n\t\t\t\t\t\t\t\t\t\thref=\"#top\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</footer>\n\n\t\t\t\t\t\t<div className=\"comment-content\">\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t{ __( 'Hi, this is a comment.' ) }\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t{ __( 'Commenter avatars come from' ) }{ ' ' }\n\t\t\t\t\t\t\t\t<a href=\"https://gravatar.com/\">Gravatar</a>.\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className=\"reply\">\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName=\"comment-reply-link\"\n\t\t\t\t\t\t\t\thref=\"#top\"\n\t\t\t\t\t\t\t\taria-label=\"Reply to A WordPress Commenter\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Reply' ) }\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</article>\n\t\t\t\t</li>\n\t\t\t</ol>\n\n\t\t\t<div className=\"navigation\">\n\t\t\t\t<div className=\"alignleft\">\n\t\t\t\t\t<a href=\"#top\">« { __( 'Older Comments' ) }</a>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"alignright\">\n\t\t\t\t\t<a href=\"#top\">{ __( 'Newer Comments' ) } »</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<CommentsForm postId={ postId } postType={ postType } />\n\t\t</div>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tWarning,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport Placeholder from './placeholder';\n\nexport default function CommentsLegacy( {\n\tattributes,\n\tsetAttributes,\n\tcontext: { postType, postId },\n} ) {\n\tconst { textAlign } = attributes;\n\n\tconst actions = [\n\t\t<Button\n\t\t\tkey=\"convert\"\n\t\t\tonClick={ () => void setAttributes( { legacy: false } ) }\n\t\t\tvariant=\"primary\"\n\t\t>\n\t\t\t{ __( 'Switch to editable mode' ) }\n\t\t</Button>,\n\t];\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Warning actions={ actions }>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Comments block: You’re currently using the legacy version of the block. ' +\n\t\t\t\t\t\t\t'The following is just a placeholder - the final styling will likely look different. ' +\n\t\t\t\t\t\t\t'For a better representation and more customization options, ' +\n\t\t\t\t\t\t\t'switch the block to its editable mode.'\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t\t<Placeholder postId={ postId } postType={ postType } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","const TEMPLATE = [\n\t[ 'core/comments-title' ],\n\t[\n\t\t'core/comment-template',\n\t\t{},\n\t\t[\n\t\t\t[\n\t\t\t\t'core/columns',\n\t\t\t\t{},\n\t\t\t\t[\n\t\t\t\t\t[\n\t\t\t\t\t\t'core/column',\n\t\t\t\t\t\t{ width: '40px' },\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'core/avatar',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tsize: 40,\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tborder: { radius: '20px' },\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],\n\t\t\t\t\t\t],\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t'core/column',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'core/comment-author-name',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfontSize: 'small',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'core/group',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlayout: { type: 'flex' },\n\t\t\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t\t\tspacing: {\n\t\t\t\t\t\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\t\t\t\t\t\ttop: '0px',\n\t\t\t\t\t\t\t\t\t\t\t\tbottom: '0px',\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'core/comment-date',\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfontSize: 'small',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'core/comment-edit-link',\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfontSize: 'small',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t[ 'core/comment-content' ],\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'core/comment-reply-link',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfontSize: 'small',\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],\n\t\t\t],\n\t\t],\n\t],\n\t[ 'core/comments-pagination' ],\n\t[ 'core/post-comments-form' ],\n];\n\nexport default TEMPLATE;\n","/**\n * WordPress dependencies\n */\nimport { postComments as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport save from './save';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport CommentsInspectorControls from './comments-inspector-controls';\nimport CommentsLegacy from './comments-legacy';\nimport TEMPLATE from './template';\n\nexport default function CommentsEdit( props ) {\n\tconst { attributes, setAttributes } = props;\n\tconst { tagName: TagName, legacy } = attributes;\n\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t} );\n\n\tif ( legacy ) {\n\t\treturn <CommentsLegacy { ...props } />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<CommentsInspectorControls\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t/>\n\t\t\t<TagName { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes: { tagName: Tag, legacy } } ) {\n\tconst blockProps = useBlockProps.save();\n\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\n\t// The legacy version is dynamic (i.e. PHP rendered) and doesn't allow inner\n\t// blocks, so nothing is saved in that case.\n\treturn legacy ? null : <Tag { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { commentAuthorAvatar 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","/**\n * WordPress dependencies\n */\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\t__experimentalGetSpacingClassesAndStyles as useSpacingProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { PanelBody, ResizableBox, RangeControl } from '@wordpress/components';\nimport { useEntityProp } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { __, isRTL } from '@wordpress/i18n';\n\nexport default function Edit( {\n\tattributes,\n\tcontext: { commentId },\n\tsetAttributes,\n\tisSelected,\n} ) {\n\tconst { height, width } = attributes;\n\n\tconst [ avatars ] = useEntityProp(\n\t\t'root',\n\t\t'comment',\n\t\t'author_avatar_urls',\n\t\tcommentId\n\t);\n\n\tconst [ authorName ] = useEntityProp(\n\t\t'root',\n\t\t'comment',\n\t\t'author_name',\n\t\tcommentId\n\t);\n\tconst avatarUrls = avatars ? Object.values( avatars ) : null;\n\tconst sizes = avatars ? Object.keys( avatars ) : null;\n\tconst minSize = sizes ? sizes[ 0 ] : 24;\n\tconst maxSize = sizes ? sizes[ sizes.length - 1 ] : 96;\n\tconst blockProps = useBlockProps();\n\tconst spacingProps = useSpacingProps( attributes );\n\tconst maxSizeBuffer = Math.floor( maxSize * 2.5 );\n\tconst { avatarURL } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { __experimentalDiscussionSettings } = getSettings();\n\t\treturn __experimentalDiscussionSettings;\n\t} );\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Avatar Settings' ) }>\n\t\t\t\t<RangeControl\n\t\t\t\t\tlabel={ __( 'Image size' ) }\n\t\t\t\t\tonChange={ ( newWidth ) =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\twidth: newWidth,\n\t\t\t\t\t\t\theight: newWidth,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tmin={ minSize }\n\t\t\t\t\tmax={ maxSizeBuffer }\n\t\t\t\t\tinitialPosition={ width }\n\t\t\t\t\tvalue={ width }\n\t\t\t\t/>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\tconst resizableAvatar = (\n\t\t<ResizableBox\n\t\t\tsize={ {\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t} }\n\t\t\tshowHandle={ isSelected }\n\t\t\tonResizeStop={ ( event, direction, elt, delta ) => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\theight: parseInt( height + delta.height, 10 ),\n\t\t\t\t\twidth: parseInt( width + delta.width, 10 ),\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tlockAspectRatio\n\t\t\tenable={ {\n\t\t\t\ttop: false,\n\t\t\t\tright: ! isRTL(),\n\t\t\t\tbottom: true,\n\t\t\t\tleft: isRTL(),\n\t\t\t} }\n\t\t\tminWidth={ minSize }\n\t\t\tmaxWidth={ maxSizeBuffer }\n\t\t>\n\t\t\t<img\n\t\t\t\tsrc={\n\t\t\t\t\tavatarUrls ? avatarUrls[ avatarUrls.length - 1 ] : avatarURL\n\t\t\t\t}\n\t\t\t\talt={ `${ authorName } ${ __( 'Avatar' ) }` }\n\t\t\t\t{ ...blockProps }\n\t\t\t/>\n\t\t</ResizableBox>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ inspectorControls }\n\t\t\t<div { ...spacingProps }>{ resizableAvatar }</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path, Circle } from '@wordpress/primitives';\n\nconst commentAuthorName = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\td=\"M18 4H6c-1.1 0-2 .9-2 2v12.9c0 .6.5 1.1 1.1 1.1.3 0 .5-.1.8-.3L8.5 17H18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5H7.9l-2.4 2.4V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v9z\"\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t\t<Path\n\t\t\td=\"M15 15V15C15 13.8954 14.1046 13 13 13L11 13C9.89543 13 9 13.8954 9 15V15\"\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t\t<Circle cx=\"12\" cy=\"9\" r=\"2\" fillRule=\"evenodd\" clipRule=\"evenodd\" />\n\t</SVG>\n);\n\nexport default commentAuthorName;\n","/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\n\nconst v1 = {\n\tattributes: {\n\t\tisLink: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t\tlinkTarget: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '_self',\n\t\t},\n\t},\n\tsupports: {\n\t\thtml: false,\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t\tlink: true,\n\t\t},\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\t__experimentalLetterSpacing: true,\n\t\t},\n\t},\n\tsave() {\n\t\treturn null;\n\t},\n\tmigrate: migrateFontFamily,\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v1 ];\n","/**\n * WordPress dependencies\n */\nimport { commentAuthorName 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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { PanelBody, ToggleControl } from '@wordpress/components';\n\n/**\n * Renders the `core/comment-author-name` block on the editor.\n *\n * @param {Object} props                       React props.\n * @param {Object} props.setAttributes         Callback for updating block attributes.\n * @param {Object} props.attributes            Block attributes.\n * @param {string} props.attributes.isLink     Whether the author name should be linked.\n * @param {string} props.attributes.linkTarget Target of the link.\n * @param {string} props.attributes.textAlign  Text alignment.\n * @param {Object} props.context               Inherited context.\n * @param {string} props.context.commentId     The comment ID.\n *\n * @return {JSX.Element} React element.\n */\nexport default function Edit( {\n\tattributes: { isLink, linkTarget, textAlign },\n\tcontext: { commentId },\n\tsetAttributes,\n} ) {\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\tlet displayName = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord } = select( coreStore );\n\n\t\t\tconst comment = getEntityRecord( 'root', 'comment', commentId );\n\t\t\tconst authorName = comment?.author_name; // eslint-disable-line camelcase\n\n\t\t\tif ( comment && ! authorName ) {\n\t\t\t\tconst user = getEntityRecord( 'root', 'user', comment.author );\n\t\t\t\treturn user?.name ?? __( 'Anonymous' );\n\t\t\t}\n\t\t\treturn authorName ?? '';\n\t\t},\n\t\t[ commentId ]\n\t);\n\n\tconst blockControls = (\n\t\t<BlockControls group=\"block\">\n\t\t\t<AlignmentControl\n\t\t\t\tvalue={ textAlign }\n\t\t\t\tonChange={ ( newAlign ) =>\n\t\t\t\t\tsetAttributes( { textAlign: newAlign } )\n\t\t\t\t}\n\t\t\t/>\n\t\t</BlockControls>\n\t);\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Link to authors URL' ) }\n\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\tchecked={ isLink }\n\t\t\t\t/>\n\t\t\t\t{ isLink && (\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\tif ( ! commentId || ! displayName ) {\n\t\tdisplayName = _x( 'Comment Author', 'block title' );\n\t}\n\n\tconst displayAuthor = isLink ? (\n\t\t<a\n\t\t\thref=\"#comment-author-pseudo-link\"\n\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t>\n\t\t\t{ displayName }\n\t\t</a>\n\t) : (\n\t\tdisplayName\n\t);\n\treturn (\n\t\t<>\n\t\t\t{ inspectorControls }\n\t\t\t{ blockControls }\n\t\t\t<div { ...blockProps }>{ displayAuthor }</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst commentContent = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M6.68822 16.625L5.5 17.8145L5.5 5.5L18.5 5.5L18.5 16.625L6.68822 16.625ZM7.31 18.125L19 18.125C19.5523 18.125 20 17.6773 20 17.125L20 5C20 4.44772 19.5523 4 19 4H5C4.44772 4 4 4.44772 4 5V19.5247C4 19.8173 4.16123 20.086 4.41935 20.2237C4.72711 20.3878 5.10601 20.3313 5.35252 20.0845L7.31 18.125ZM16 9.99997H8V8.49997H16V9.99997ZM8 14H13V12.5H8V14Z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default commentContent;\n","/**\n * WordPress dependencies\n */\nimport { commentContent 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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { _x } from '@wordpress/i18n';\nimport { RawHTML } from '@wordpress/element';\nimport { Disabled } from '@wordpress/components';\nimport { useEntityProp } from '@wordpress/core-data';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\n/**\n * Renders the `core/comment-content` block on the editor.\n *\n * @param {Object} props                      React props.\n * @param {Object} props.setAttributes        Callback for updating block attributes.\n * @param {Object} props.attributes           Block attributes.\n * @param {string} props.attributes.textAlign The `textAlign` attribute.\n * @param {Object} props.context              Inherited context.\n * @param {string} props.context.commentId    The comment ID.\n *\n * @return {JSX.Element} React element.\n */\nexport default function Edit( {\n\tsetAttributes,\n\tattributes: { textAlign },\n\tcontext: { commentId },\n} ) {\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\tconst [ content ] = useEntityProp(\n\t\t'root',\n\t\t'comment',\n\t\t'content',\n\t\tcommentId\n\t);\n\n\tconst blockControls = (\n\t\t<BlockControls group=\"block\">\n\t\t\t<AlignmentControl\n\t\t\t\tvalue={ textAlign }\n\t\t\t\tonChange={ ( newAlign ) =>\n\t\t\t\t\tsetAttributes( { textAlign: newAlign } )\n\t\t\t\t}\n\t\t\t/>\n\t\t</BlockControls>\n\t);\n\n\tif ( ! commentId || ! content ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ blockControls }\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<p>{ _x( 'Comment Content', 'block title' ) }</p>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ blockControls }\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Disabled>\n\t\t\t\t\t<RawHTML key=\"html\">{ content.rendered }</RawHTML>\n\t\t\t\t</Disabled>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst postDate = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M11.696 13.972c.356-.546.599-.958.728-1.235a1.79 1.79 0 00.203-.783c0-.264-.077-.47-.23-.618-.148-.153-.354-.23-.618-.23-.295 0-.569.07-.82.212a3.413 3.413 0 00-.738.571l-.147-1.188c.289-.234.59-.41.903-.526.313-.117.66-.175 1.041-.175.375 0 .695.08.959.24.264.153.46.362.59.626.135.265.203.556.203.876 0 .362-.08.734-.24 1.115-.154.381-.427.87-.82 1.466l-.756 1.152H14v1.106h-4l1.696-2.609z\" />\n\t\t<Path d=\"M19.5 7h-15v12a.5.5 0 00.5.5h14a.5.5 0 00.5-.5V7zM3 7V5a2 2 0 012-2h14a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V7z\" />\n\t</SVG>\n);\n\nexport default postDate;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"date\"];","/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\n\nconst v1 = {\n\tattributes: {\n\t\tformat: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tisLink: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tsupports: {\n\t\thtml: false,\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t\tlink: true,\n\t\t},\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\t__experimentalLetterSpacing: true,\n\t\t},\n\t},\n\tsave() {\n\t\treturn null;\n\t},\n\tmigrate: migrateFontFamily,\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v1 ];\n","/**\n * WordPress dependencies\n */\nimport { postDate 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","/**\n * WordPress dependencies\n */\nimport { useEntityProp } from '@wordpress/core-data';\nimport { dateI18n, getSettings as getDateSettings } from '@wordpress/date';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\t__experimentalDateFormatPicker as DateFormatPicker,\n} from '@wordpress/block-editor';\nimport { PanelBody, ToggleControl } from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\n\n/**\n * Renders the `core/comment-date` block on the editor.\n *\n * @param {Object} props                   React props.\n * @param {Object} props.setAttributes     Callback for updating block attributes.\n * @param {Object} props.attributes        Block attributes.\n * @param {string} props.attributes.format Format of the date.\n * @param {string} props.attributes.isLink Whether the author name should be linked.\n * @param {Object} props.context           Inherited context.\n * @param {string} props.context.commentId The comment ID.\n *\n * @return {JSX.Element} React element.\n */\nexport default function Edit( {\n\tattributes: { format, isLink },\n\tcontext: { commentId },\n\tsetAttributes,\n} ) {\n\tconst blockProps = useBlockProps();\n\tlet [ date ] = useEntityProp( 'root', 'comment', 'date', commentId );\n\tconst [ siteFormat = getDateSettings().formats.date ] = useEntityProp(\n\t\t'root',\n\t\t'site',\n\t\t'date_format'\n\t);\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t<DateFormatPicker\n\t\t\t\t\tformat={ format }\n\t\t\t\t\tdefaultFormat={ siteFormat }\n\t\t\t\t\tonChange={ ( nextFormat ) =>\n\t\t\t\t\t\tsetAttributes( { format: nextFormat } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Link to comment' ) }\n\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\tchecked={ isLink }\n\t\t\t\t/>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\tif ( ! commentId || ! date ) {\n\t\tdate = _x( 'Comment Date', 'block title' );\n\t}\n\n\tlet commentDate =\n\t\tdate instanceof Date ? (\n\t\t\t<time dateTime={ dateI18n( 'c', date ) }>\n\t\t\t\t{ dateI18n( format || siteFormat, date ) }\n\t\t\t</time>\n\t\t) : (\n\t\t\t<time>{ date }</time>\n\t\t);\n\n\tif ( isLink ) {\n\t\tcommentDate = (\n\t\t\t<a\n\t\t\t\thref=\"#comment-date-pseudo-link\"\n\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t>\n\t\t\t\t{ commentDate }\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ inspectorControls }\n\t\t\t<div { ...blockProps }>{ commentDate }</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst commentEditLink = (\n\t<SVG\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t>\n\t\t<Path d=\"m6.249 11.065.44-.44h3.186l-1.5 1.5H7.31l-1.957 1.96A.792.792 0 0 1 4 13.524V5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v1.5L12.5 8V5.5h-7v6.315l.749-.75ZM20 19.75H7v-1.5h13v1.5Zm0-12.653-8.967 9.064L8 17l.867-2.935L17.833 5 20 7.097Z\" />\n\t</SVG>\n);\n\nexport default commentEditLink;\n","/**\n * WordPress dependencies\n */\nimport { commentEditLink 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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { PanelBody, ToggleControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nexport default function Edit( {\n\tattributes: { linkTarget, textAlign },\n\tsetAttributes,\n} ) {\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tconst blockControls = (\n\t\t<BlockControls group=\"block\">\n\t\t\t<AlignmentControl\n\t\t\t\tvalue={ textAlign }\n\t\t\t\tonChange={ ( newAlign ) =>\n\t\t\t\t\tsetAttributes( { textAlign: newAlign } )\n\t\t\t\t}\n\t\t\t/>\n\t\t</BlockControls>\n\t);\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t/>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ blockControls }\n\t\t\t{ inspectorControls }\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<a\n\t\t\t\t\thref=\"#edit-comment-pseudo-link\"\n\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst commentReplyLink = (\n\t<SVG\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t>\n\t\t<Path d=\"M6.68822 10.625L6.24878 11.0649L5.5 11.8145L5.5 5.5L12.5 5.5V8L14 6.5V5C14 4.44772 13.5523 4 13 4H5C4.44772 4 4 4.44771 4 5V13.5247C4 13.8173 4.16123 14.086 4.41935 14.2237C4.72711 14.3878 5.10601 14.3313 5.35252 14.0845L7.31 12.125H8.375L9.875 10.625H7.31H6.68822ZM14.5605 10.4983L11.6701 13.75H16.9975C17.9963 13.75 18.7796 14.1104 19.3553 14.7048C19.9095 15.2771 20.2299 16.0224 20.4224 16.7443C20.7645 18.0276 20.7543 19.4618 20.7487 20.2544C20.7481 20.345 20.7475 20.4272 20.7475 20.4999L19.2475 20.5001C19.2475 20.4191 19.248 20.3319 19.2484 20.2394V20.2394C19.2526 19.4274 19.259 18.2035 18.973 17.1307C18.8156 16.5401 18.586 16.0666 18.2778 15.7483C17.9909 15.4521 17.5991 15.25 16.9975 15.25H11.8106L14.5303 17.9697L13.4696 19.0303L8.96956 14.5303L13.4394 9.50171L14.5605 10.4983Z\" />\n\t</SVG>\n);\n\nexport default commentReplyLink;\n","/**\n * WordPress dependencies\n */\nimport { commentReplyLink 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\tedit,\n\ticon,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\n/**\n * Renders the `core/comment-reply-link` block on the editor.\n *\n * @param {Object} props                      React props.\n * @param {Object} props.setAttributes        Callback for updating block attributes.\n * @param {Object} props.attributes           Block attributes.\n * @param {string} props.attributes.textAlign The `textAlign` attribute.\n *\n * @return {JSX.Element} React element.\n */\nfunction Edit( { setAttributes, attributes: { textAlign } } ) {\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tconst blockControls = (\n\t\t<BlockControls group=\"block\">\n\t\t\t<AlignmentControl\n\t\t\t\tvalue={ textAlign }\n\t\t\t\tonChange={ ( newAlign ) =>\n\t\t\t\t\tsetAttributes( { textAlign: newAlign } )\n\t\t\t\t}\n\t\t\t/>\n\t\t</BlockControls>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ blockControls }\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<a\n\t\t\t\t\thref=\"#comment-reply-pseudo-link\"\n\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Reply' ) }\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default Edit;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst layout = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z\" />\n\t</SVG>\n);\n\nexport default layout;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"apiFetch\"];","/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport apiFetch from '@wordpress/api-fetch';\n\n// This is limited by WP REST API\nconst MAX_COMMENTS_PER_PAGE = 100;\n\n/**\n * Return an object with the query args needed to fetch the default page of\n * comments.\n *\n * @param {Object} props        Hook props.\n * @param {number} props.postId ID of the post that contains the comments.\n *                              discussion settings.\n *\n * @return {Object} Query args to retrieve the comments.\n */\nexport const useCommentQueryArgs = ( { postId } ) => {\n\t// Initialize the query args that are not going to change.\n\tconst queryArgs = {\n\t\tstatus: 'approve',\n\t\torder: 'asc',\n\t\tcontext: 'embed',\n\t\tparent: 0,\n\t\t_embed: 'children',\n\t};\n\n\t// Get the Discussion settings that may be needed to query the comments.\n\tconst {\n\t\tpageComments,\n\t\tcommentsPerPage,\n\t\tdefaultCommentsPage: defaultPage,\n\t} = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { __experimentalDiscussionSettings } = getSettings();\n\t\treturn __experimentalDiscussionSettings;\n\t} );\n\n\t// WP REST API doesn't allow fetching more than max items limit set per single page of data.\n\t// As for the editor performance is more important than completeness of data and fetching only the\n\t// max allowed for single page should be enough for the purpose of design and laying out the page.\n\t// Fetching over the limit would return an error here but would work with backend query.\n\tconst perPage = pageComments\n\t\t? Math.min( commentsPerPage, MAX_COMMENTS_PER_PAGE )\n\t\t: MAX_COMMENTS_PER_PAGE;\n\n\t// Get the number of the default page.\n\tconst page = useDefaultPageIndex( {\n\t\tdefaultPage,\n\t\tpostId,\n\t\tperPage,\n\t\tqueryArgs,\n\t} );\n\n\t// Merge, memoize and return all query arguments, unless the default page's\n\t// number is not known yet.\n\treturn useMemo( () => {\n\t\treturn page\n\t\t\t? {\n\t\t\t\t\t...queryArgs,\n\t\t\t\t\tpost: postId,\n\t\t\t\t\tper_page: perPage,\n\t\t\t\t\tpage,\n\t\t\t  }\n\t\t\t: null;\n\t}, [ postId, perPage, page ] );\n};\n\n/**\n * Return the index of the default page, depending on whether `defaultPage` is\n * `newest` or `oldest`. In the first case, the only way to know the page's\n * index is by using the `X-WP-TotalPages` header, which forces to make an\n * additional request.\n *\n * @param {Object} props             Hook props.\n * @param {string} props.defaultPage Page shown by default (newest/oldest).\n * @param {number} props.postId      ID of the post that contains the comments.\n * @param {number} props.perPage     The number of comments included per page.\n * @param {Object} props.queryArgs   Other query args.\n *\n * @return {number} Index of the default comments page.\n */\nconst useDefaultPageIndex = ( { defaultPage, postId, perPage, queryArgs } ) => {\n\t// Store the default page indices.\n\tconst [ defaultPages, setDefaultPages ] = useState( {} );\n\tconst key = `${ postId }_${ perPage }`;\n\tconst page = defaultPages[ key ] || 0;\n\n\tuseEffect( () => {\n\t\t// Do nothing if the page is already known or not the newest page.\n\t\tif ( page || defaultPage !== 'newest' ) {\n\t\t\treturn;\n\t\t}\n\t\t// We need to fetch comments to know the index. Use HEAD and limit\n\t\t// fields just to ID, to make this call as light as possible.\n\t\tapiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/comments', {\n\t\t\t\t...queryArgs,\n\t\t\t\tpost: postId,\n\t\t\t\tper_page: perPage,\n\t\t\t\t_fields: 'id',\n\t\t\t} ),\n\t\t\tmethod: 'HEAD',\n\t\t\tparse: false,\n\t\t} ).then( ( res ) => {\n\t\t\tconst pages = parseInt( res.headers.get( 'X-WP-TotalPages' ) );\n\t\t\tsetDefaultPages( {\n\t\t\t\t...defaultPages,\n\t\t\t\t[ key ]: pages <= 1 ? 1 : pages, // If there are 0 pages, it means that there are no comments, but there is no 0th page.\n\t\t\t} );\n\t\t} );\n\t}, [ defaultPage, postId, perPage, setDefaultPages ] );\n\n\t// The oldest one is always the first one.\n\treturn defaultPage === 'newest' ? page : 1;\n};\n\n/**\n * Generate a tree structure of comment IDs from a list of comment entities. The\n * children of each comment are obtained from `_embedded`.\n *\n * @typedef {{ commentId: number, children: CommentNode }} CommentNode\n *\n * @param {Object[]} topLevelComments List of comment entities.\n * @return {{ commentTree: CommentNode[]}} Tree of comment IDs.\n */\nexport const useCommentTree = ( topLevelComments ) => {\n\tconst commentTree = useMemo(\n\t\t() =>\n\t\t\ttopLevelComments?.map( ( { id, _embedded } ) => {\n\t\t\t\tconst [ children ] = _embedded?.children || [ [] ];\n\t\t\t\treturn {\n\t\t\t\t\tcommentId: id,\n\t\t\t\t\tchildren: children.map( ( child ) => ( {\n\t\t\t\t\t\tcommentId: child.id,\n\t\t\t\t\t} ) ),\n\t\t\t\t};\n\t\t\t} ),\n\t\t[ topLevelComments ]\n\t);\n\n\treturn commentTree;\n};\n","/**\n * WordPress dependencies\n */\nimport { useState, memo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockContextProvider,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBlockPreview as useBlockPreview,\n} from '@wordpress/block-editor';\nimport { Spinner } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { useCommentQueryArgs, useCommentTree } from './hooks';\n\nconst TEMPLATE = [\n\t[ 'core/avatar' ],\n\t[ 'core/comment-author-name' ],\n\t[ 'core/comment-date' ],\n\t[ 'core/comment-content' ],\n\t[ 'core/comment-reply-link' ],\n\t[ 'core/comment-edit-link' ],\n];\n\n/**\n * Function that returns a comment structure that will be rendered with default placehoders.\n *\n * Each comment has a `commentId` property that is always a negative number in\n * case of the placeholders. This is to ensure that the comment does not\n * conflict with the actual (real) comments.\n *\n * @param {Object}  settings                       Discussion Settings.\n * @param {number}  [settings.perPage]             - Comments per page setting or block attribute.\n * @param {boolean} [settings.threadComments]      - Enable threaded (nested) comments setting.\n * @param {number}  [settings.threadCommentsDepth] - Level deep of threaded comments.\n *\n * @typedef {{id: null, children: EmptyComment[]}} EmptyComment\n * @return {EmptyComment[]}                 \t\tInner blocks of the Comment Template\n */\nconst getCommentsPlaceholder = ( {\n\tperPage,\n\tthreadComments,\n\tthreadCommentsDepth,\n} ) => {\n\t// In case that `threadCommentsDepth` is falsy, we default to a somewhat\n\t// arbitrary value of 3.\n\t// In case that the value is set but larger than 3 we truncate it to 3.\n\tconst commentsDepth = Math.min( threadCommentsDepth || 3, 3 );\n\n\t// We set a limit in order not to overload the editor of empty comments.\n\tconst defaultCommentsToShow =\n\t\tperPage <= commentsDepth ? perPage : commentsDepth;\n\tif ( ! threadComments || defaultCommentsToShow === 1 ) {\n\t\t// If displaying threaded comments is disabled, we only show one comment\n\t\t// A commentId is negative in order to avoid conflicts with the actual comments.\n\t\treturn [ { commentId: -1, children: [] } ];\n\t} else if ( defaultCommentsToShow === 2 ) {\n\t\treturn [\n\t\t\t{\n\t\t\t\tcommentId: -1,\n\t\t\t\tchildren: [ { commentId: -2, children: [] } ],\n\t\t\t},\n\t\t];\n\t}\n\n\t// In case that the value is set but larger than 3 we truncate it to 3.\n\treturn [\n\t\t{\n\t\t\tcommentId: -1,\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tcommentId: -2,\n\t\t\t\t\tchildren: [ { commentId: -3, children: [] } ],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t];\n};\n\n/**\n * Component which renders the inner blocks of the Comment Template.\n *\n * @param {Object} props                      Component props.\n * @param {Array}  [props.comment]            - A comment object.\n * @param {Array}  [props.activeCommentId]    - The ID of the comment that is currently active.\n * @param {Array}  [props.setActiveCommentId] - The setter for activeCommentId.\n * @param {Array}  [props.firstCommentId]     - ID of the first comment in the array.\n * @param {Array}  [props.blocks]             - Array of blocks returned from\n *                                            getBlocks() in parent .\n * @return {WPElement}                 \t\tInner blocks of the Comment Template\n */\nfunction CommentTemplateInnerBlocks( {\n\tcomment,\n\tactiveCommentId,\n\tsetActiveCommentId,\n\tfirstCommentId,\n\tblocks,\n} ) {\n\tconst { children, ...innerBlocksProps } = useInnerBlocksProps(\n\t\t{},\n\t\t{ template: TEMPLATE }\n\t);\n\n\treturn (\n\t\t<li { ...innerBlocksProps }>\n\t\t\t{ comment.commentId === ( activeCommentId || firstCommentId )\n\t\t\t\t? children\n\t\t\t\t: null }\n\n\t\t\t{ /* To avoid flicker when switching active block contexts, a preview\n\t\t\tis ALWAYS rendered and the preview for the active block is hidden.\n\t\t\tThis ensures that when switching the active block, the component is not\n\t\t\tmounted again but rather it only toggles the `isHidden` prop.\n\n\t\t\tThe same strategy is used for preventing the flicker in the Post Template\n\t\t\tblock. */ }\n\t\t\t<MemoizedCommentTemplatePreview\n\t\t\t\tblocks={ blocks }\n\t\t\t\tcommentId={ comment.commentId }\n\t\t\t\tsetActiveCommentId={ setActiveCommentId }\n\t\t\t\tisHidden={\n\t\t\t\t\tcomment.commentId === ( activeCommentId || firstCommentId )\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t{ comment?.children?.length > 0 ? (\n\t\t\t\t<CommentsList\n\t\t\t\t\tcomments={ comment.children }\n\t\t\t\t\tactiveCommentId={ activeCommentId }\n\t\t\t\t\tsetActiveCommentId={ setActiveCommentId }\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tfirstCommentId={ firstCommentId }\n\t\t\t\t/>\n\t\t\t) : null }\n\t\t</li>\n\t);\n}\n\nconst CommentTemplatePreview = ( {\n\tblocks,\n\tcommentId,\n\tsetActiveCommentId,\n\tisHidden,\n} ) => {\n\tconst blockPreviewProps = useBlockPreview( {\n\t\tblocks,\n\t} );\n\n\tconst handleOnClick = () => {\n\t\tsetActiveCommentId( commentId );\n\t};\n\n\t// We have to hide the preview block if the `comment` props points to\n\t// the curently active block!\n\n\t// Or, to put it differently, every preview block is visible unless it is the\n\t// currently active block - in this case we render its inner blocks.\n\tconst style = {\n\t\tdisplay: isHidden ? 'none' : undefined,\n\t};\n\n\treturn (\n\t\t<div\n\t\t\t{ ...blockPreviewProps }\n\t\t\ttabIndex={ 0 }\n\t\t\trole=\"button\"\n\t\t\tstyle={ style }\n\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n\t\t\tonClick={ handleOnClick }\n\t\t\tonKeyPress={ handleOnClick }\n\t\t/>\n\t);\n};\n\nconst MemoizedCommentTemplatePreview = memo( CommentTemplatePreview );\n\n/**\n * Component that renders a list of (nested) comments. It is called recursively.\n *\n * @param {Object} props                      Component props.\n * @param {Array}  [props.comments]           - Array of comment objects.\n * @param {Array}  [props.blockProps]         - Props from parent's `useBlockProps()`.\n * @param {Array}  [props.activeCommentId]    - The ID of the comment that is currently active.\n * @param {Array}  [props.setActiveCommentId] - The setter for activeCommentId.\n * @param {Array}  [props.blocks]             - Array of blocks returned from getBlocks() in parent.\n * @param {Object} [props.firstCommentId]     - The ID of the first comment in the array of\n *                                            comment objects.\n * @return {WPElement}                 \t\tList of comments.\n */\nconst CommentsList = ( {\n\tcomments,\n\tblockProps,\n\tactiveCommentId,\n\tsetActiveCommentId,\n\tblocks,\n\tfirstCommentId,\n} ) => (\n\t<ol { ...blockProps }>\n\t\t{ comments &&\n\t\t\tcomments.map( ( { commentId, ...comment }, index ) => (\n\t\t\t\t<BlockContextProvider\n\t\t\t\t\tkey={ comment.commentId || index }\n\t\t\t\t\tvalue={ {\n\t\t\t\t\t\t// If the commentId is negative it means that this comment is a\n\t\t\t\t\t\t// \"placeholder\" and that the block is most likely being used in the\n\t\t\t\t\t\t// site editor. In this case, we have to set the commentId to `null`\n\t\t\t\t\t\t// because otherwise the (non-existent) comment with a negative ID\n\t\t\t\t\t\t// would be reqested from the REST API.\n\t\t\t\t\t\tcommentId: commentId < 0 ? null : commentId,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<CommentTemplateInnerBlocks\n\t\t\t\t\t\tcomment={ { commentId, ...comment } }\n\t\t\t\t\t\tactiveCommentId={ activeCommentId }\n\t\t\t\t\t\tsetActiveCommentId={ setActiveCommentId }\n\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\tfirstCommentId={ firstCommentId }\n\t\t\t\t\t/>\n\t\t\t\t</BlockContextProvider>\n\t\t\t) ) }\n\t</ol>\n);\n\nexport default function CommentTemplateEdit( {\n\tclientId,\n\tcontext: { postId },\n} ) {\n\tconst blockProps = useBlockProps();\n\n\tconst [ activeCommentId, setActiveCommentId ] = useState();\n\tconst {\n\t\tcommentOrder,\n\t\tthreadCommentsDepth,\n\t\tthreadComments,\n\t\tcommentsPerPage,\n\t} = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().__experimentalDiscussionSettings;\n\t} );\n\n\tconst commentQuery = useCommentQueryArgs( {\n\t\tpostId,\n\t} );\n\n\tconst { topLevelComments, blocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\t\t\tconst { getBlocks } = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\t// Request only top-level comments. Replies are embedded.\n\t\t\t\ttopLevelComments: commentQuery\n\t\t\t\t\t? getEntityRecords( 'root', 'comment', commentQuery )\n\t\t\t\t\t: null,\n\t\t\t\tblocks: getBlocks( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId, commentQuery ]\n\t);\n\n\t// Generate a tree structure of comment IDs.\n\tlet commentTree = useCommentTree(\n\t\t// Reverse the order of top comments if needed.\n\t\tcommentOrder === 'desc' && topLevelComments\n\t\t\t? [ ...topLevelComments ].reverse()\n\t\t\t: topLevelComments\n\t);\n\n\tif ( ! topLevelComments ) {\n\t\treturn (\n\t\t\t<p { ...blockProps }>\n\t\t\t\t<Spinner />\n\t\t\t</p>\n\t\t);\n\t}\n\n\tif ( ! postId ) {\n\t\tcommentTree = getCommentsPlaceholder( {\n\t\t\tperPage: commentsPerPage,\n\t\t\tthreadComments,\n\t\t\tthreadCommentsDepth,\n\t\t} );\n\t}\n\n\tif ( ! commentTree.length ) {\n\t\treturn <p { ...blockProps }>{ __( 'No results found.' ) }</p>;\n\t}\n\n\treturn (\n\t\t<CommentsList\n\t\t\tcomments={ commentTree }\n\t\t\tblockProps={ blockProps }\n\t\t\tblocks={ blocks }\n\t\t\tactiveCommentId={ activeCommentId }\n\t\t\tsetActiveCommentId={ setActiveCommentId }\n\t\t\tfirstCommentId={ commentTree[ 0 ]?.commentId }\n\t\t/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { layout 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 save from './save';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function CommentTemplateSave() {\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst queryPaginationPrevious = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M16 10.5v3h3v-3h-3zm-5 3h3v-3h-3v3zM7 9l-3 3 3 3 1-1-2-2 2-2-1-1z\" />\n\t</SVG>\n);\n\nexport default queryPaginationPrevious;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useBlockProps, PlainText } from '@wordpress/block-editor';\n\nconst arrowMap = {\n\tnone: '',\n\tarrow: '←',\n\tchevron: '«',\n};\n\nexport default function CommentsPaginationPreviousEdit( {\n\tattributes: { label },\n\tsetAttributes,\n\tcontext: { 'comments/paginationArrow': paginationArrow },\n} ) {\n\tconst displayArrow = arrowMap[ paginationArrow ];\n\treturn (\n\t\t<a\n\t\t\thref=\"#comments-pagination-previous-pseudo-link\"\n\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t{ ...useBlockProps() }\n\t\t>\n\t\t\t{ displayArrow && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={ `wp-block-comments-pagination-previous-arrow is-arrow-${ paginationArrow }` }\n\t\t\t\t>\n\t\t\t\t\t{ displayArrow }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t\t<PlainText\n\t\t\t\t__experimentalVersion={ 2 }\n\t\t\t\ttagName=\"span\"\n\t\t\t\taria-label={ __( 'Older comments page link' ) }\n\t\t\t\tplaceholder={ __( 'Older Comments' ) }\n\t\t\t\tvalue={ label }\n\t\t\t\tonChange={ ( newLabel ) =>\n\t\t\t\t\tsetAttributes( { label: newLabel } )\n\t\t\t\t}\n\t\t\t/>\n\t\t</a>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { queryPaginationPrevious 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","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst queryPagination = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 13.5h6v-3H4v3zm8 0h3v-3h-3v3zm5-3v3h3v-3h-3z\" />\n\t</SVG>\n);\n\nexport default queryPagination;\n","/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\n\nexport function CommentsPaginationArrowControls( { value, onChange } ) {\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\tlabel={ __( 'Arrow' ) }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\thelp={ __(\n\t\t\t\t'A decorative arrow appended to the next and previous comments link.'\n\t\t\t) }\n\t\t\tisBlock\n\t\t>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tvalue=\"none\"\n\t\t\t\tlabel={ _x(\n\t\t\t\t\t'None',\n\t\t\t\t\t'Arrow option for Comments Pagination Next/Previous blocks'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tvalue=\"arrow\"\n\t\t\t\tlabel={ _x(\n\t\t\t\t\t'Arrow',\n\t\t\t\t\t'Arrow option for Comments Pagination Next/Previous blocks'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tvalue=\"chevron\"\n\t\t\t\tlabel={ _x(\n\t\t\t\t\t'Chevron',\n\t\t\t\t\t'Arrow option for Comments Pagination Next/Previous blocks'\n\t\t\t\t) }\n\t\t\t/>\n\t\t</ToggleGroupControl>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n\tWarning,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { PanelBody } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { CommentsPaginationArrowControls } from './comments-pagination-arrow-controls';\n\nconst TEMPLATE = [\n\t[ 'core/comments-pagination-previous' ],\n\t[ 'core/comments-pagination-numbers' ],\n\t[ 'core/comments-pagination-next' ],\n];\nconst ALLOWED_BLOCKS = [\n\t'core/comments-pagination-previous',\n\t'core/comments-pagination-numbers',\n\t'core/comments-pagination-next',\n];\n\nconst getDefaultBlockLayout = ( blockTypeOrName ) => {\n\tconst layoutBlockSupportConfig = getBlockSupport(\n\t\tblockTypeOrName,\n\t\t'__experimentalLayout'\n\t);\n\treturn layoutBlockSupportConfig?.default;\n};\n\nexport default function QueryPaginationEdit( {\n\tattributes: { paginationArrow, layout },\n\tsetAttributes,\n\tclientId,\n\tname,\n} ) {\n\tconst usedLayout = layout || getDefaultBlockLayout( name );\n\tconst hasNextPreviousBlocks = useSelect( ( select ) => {\n\t\tconst { getBlocks } = select( blockEditorStore );\n\t\tconst innerBlocks = getBlocks( clientId );\n\t\t/**\n\t\t * Show the `paginationArrow` control only if a\n\t\t * Comments Pagination Next or Comments Pagination Previous\n\t\t * block exists.\n\t\t */\n\t\treturn innerBlocks?.find( ( innerBlock ) => {\n\t\t\treturn [\n\t\t\t\t'core/comments-pagination-previous',\n\t\t\t\t'core/comments-pagination-next',\n\t\t\t].includes( innerBlock.name );\n\t\t} );\n\t}, [] );\n\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t__experimentalLayout: usedLayout,\n\t} );\n\n\t// Get the Discussion settings\n\tconst pageComments = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst { __experimentalDiscussionSettings } = getSettings();\n\t\treturn __experimentalDiscussionSettings?.pageComments;\n\t}, [] );\n\n\t// If paging comments is not enabled in the Discussion Settings then hide the pagination\n\t// controls. We don't want to remove them from the template so that when the user enables\n\t// paging comments, the controls will be visible.\n\tif ( ! pageComments ) {\n\t\treturn (\n\t\t\t<Warning>\n\t\t\t\t{ __(\n\t\t\t\t\t'Comments Pagination block: paging comments is disabled in the Discussion Settings'\n\t\t\t\t) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ hasNextPreviousBlocks && (\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t<CommentsPaginationArrowControls\n\t\t\t\t\t\t\tvalue={ paginationArrow }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { paginationArrow: value } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { queryPagination 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 save from './save';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function save() {\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst queryPaginationNext = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M5 13.5h3v-3H5v3zm5 0h3v-3h-3v3zM17 9l-1 1 2 2-2 2 1 1 3-3-3-3z\" />\n\t</SVG>\n);\n\nexport default queryPaginationNext;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useBlockProps, PlainText } from '@wordpress/block-editor';\n\nconst arrowMap = {\n\tnone: '',\n\tarrow: '→',\n\tchevron: '»',\n};\n\nexport default function CommentsPaginationNextEdit( {\n\tattributes: { label },\n\tsetAttributes,\n\tcontext: { 'comments/paginationArrow': paginationArrow },\n} ) {\n\tconst displayArrow = arrowMap[ paginationArrow ];\n\treturn (\n\t\t<a\n\t\t\thref=\"#comments-pagination-next-pseudo-link\"\n\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t{ ...useBlockProps() }\n\t\t>\n\t\t\t<PlainText\n\t\t\t\t__experimentalVersion={ 2 }\n\t\t\t\ttagName=\"span\"\n\t\t\t\taria-label={ __( 'Newer comments page link' ) }\n\t\t\t\tplaceholder={ __( 'Newer Comments' ) }\n\t\t\t\tvalue={ label }\n\t\t\t\tonChange={ ( newLabel ) =>\n\t\t\t\t\tsetAttributes( { label: newLabel } )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ displayArrow && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={ `wp-block-comments-pagination-next-arrow is-arrow-${ paginationArrow }` }\n\t\t\t\t>\n\t\t\t\t\t{ displayArrow }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</a>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { queryPaginationNext 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","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst queryPaginationNumbers = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 13.5h6v-3H4v3zm8.2-2.5.8-.3V14h1V9.3l-2.2.7.4 1zm7.1-1.2c-.5-.6-1.2-.5-1.7-.4-.3.1-.5.2-.7.3l.1 1.1c.2-.2.5-.4.8-.5.3-.1.6 0 .7.1.2.3 0 .8-.2 1.1-.5.8-.9 1.6-1.4 2.5h2.7v-1h-.9c.3-.6.8-1.4.9-2.1 0-.3-.1-.8-.3-1.1z\" />\n\t</SVG>\n);\n\nexport default queryPaginationNumbers;\n","/**\n * WordPress dependencies\n */\nimport { useBlockProps } from '@wordpress/block-editor';\n\nconst PaginationItem = ( { content, tag: Tag = 'a', extraClass = '' } ) =>\n\tTag === 'a' ? (\n\t\t<Tag\n\t\t\tclassName={ `page-numbers ${ extraClass }` }\n\t\t\thref=\"#comments-pagination-numbers-pseudo-link\"\n\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t>\n\t\t\t{ content }\n\t\t</Tag>\n\t) : (\n\t\t<Tag className={ `page-numbers ${ extraClass }` }>{ content }</Tag>\n\t);\n\nexport default function CommentsPaginationNumbersEdit() {\n\treturn (\n\t\t<div { ...useBlockProps() }>\n\t\t\t<PaginationItem content=\"1\" />\n\t\t\t<PaginationItem content=\"2\" />\n\t\t\t<PaginationItem content=\"3\" tag=\"span\" extraClass=\"current\" />\n\t\t\t<PaginationItem content=\"4\" />\n\t\t\t<PaginationItem content=\"5\" />\n\t\t\t<PaginationItem content=\"...\" tag=\"span\" extraClass=\"dots\" />\n\t\t\t<PaginationItem content=\"8\" />\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { queryPaginationNumbers 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","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst title = (\n\t<SVG xmlns=\"https://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 5.417h2.267V12h1.466V5.417H10V4H4v1.417ZM20 16H4v-1.5h16V16Zm-7 4H4v-1.5h9V20Z\" />\n\t</SVG>\n);\n\nexport default title;\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/components';\n\n/** @typedef {import('@wordpress/element').WPComponent} WPComponent */\n\n/**\n * HeadingLevelIcon props.\n *\n * @typedef WPHeadingLevelIconProps\n *\n * @property {number}   level     The heading level to show an icon for.\n * @property {?boolean} isPressed Whether or not the icon should appear pressed; default: false.\n */\n\n/**\n * Heading level icon.\n *\n * @param {WPHeadingLevelIconProps} props Component props.\n *\n * @return {?WPComponent} The icon.\n */\nexport default function HeadingLevelIcon( { level, isPressed = false } ) {\n\tconst levelToPath = {\n\t\t1: 'M9 5h2v10H9v-4H5v4H3V5h2v4h4V5zm6.6 0c-.6.9-1.5 1.7-2.6 2v1h2v7h2V5h-1.4z',\n\t\t2: 'M7 5h2v10H7v-4H3v4H1V5h2v4h4V5zm8 8c.5-.4.6-.6 1.1-1.1.4-.4.8-.8 1.2-1.3.3-.4.6-.8.9-1.3.2-.4.3-.8.3-1.3 0-.4-.1-.9-.3-1.3-.2-.4-.4-.7-.8-1-.3-.3-.7-.5-1.2-.6-.5-.2-1-.2-1.5-.2-.4 0-.7 0-1.1.1-.3.1-.7.2-1 .3-.3.1-.6.3-.9.5-.3.2-.6.4-.8.7l1.2 1.2c.3-.3.6-.5 1-.7.4-.2.7-.3 1.2-.3s.9.1 1.3.4c.3.3.5.7.5 1.1 0 .4-.1.8-.4 1.1-.3.5-.6.9-1 1.2-.4.4-1 .9-1.6 1.4-.6.5-1.4 1.1-2.2 1.6V15h8v-2H15z',\n\t\t3: 'M12.1 12.2c.4.3.8.5 1.2.7.4.2.9.3 1.4.3.5 0 1-.1 1.4-.3.3-.1.5-.5.5-.8 0-.2 0-.4-.1-.6-.1-.2-.3-.3-.5-.4-.3-.1-.7-.2-1-.3-.5-.1-1-.1-1.5-.1V9.1c.7.1 1.5-.1 2.2-.4.4-.2.6-.5.6-.9 0-.3-.1-.6-.4-.8-.3-.2-.7-.3-1.1-.3-.4 0-.8.1-1.1.3-.4.2-.7.4-1.1.6l-1.2-1.4c.5-.4 1.1-.7 1.6-.9.5-.2 1.2-.3 1.8-.3.5 0 1 .1 1.6.2.4.1.8.3 1.2.5.3.2.6.5.8.8.2.3.3.7.3 1.1 0 .5-.2.9-.5 1.3-.4.4-.9.7-1.5.9v.1c.6.1 1.2.4 1.6.8.4.4.7.9.7 1.5 0 .4-.1.8-.3 1.2-.2.4-.5.7-.9.9-.4.3-.9.4-1.3.5-.5.1-1 .2-1.6.2-.8 0-1.6-.1-2.3-.4-.6-.2-1.1-.6-1.6-1l1.1-1.4zM7 9H3V5H1v10h2v-4h4v4h2V5H7v4z',\n\t\t4: 'M9 15H7v-4H3v4H1V5h2v4h4V5h2v10zm10-2h-1v2h-2v-2h-5v-2l4-6h3v6h1v2zm-3-2V7l-2.8 4H16z',\n\t\t5: 'M12.1 12.2c.4.3.7.5 1.1.7.4.2.9.3 1.3.3.5 0 1-.1 1.4-.4.4-.3.6-.7.6-1.1 0-.4-.2-.9-.6-1.1-.4-.3-.9-.4-1.4-.4H14c-.1 0-.3 0-.4.1l-.4.1-.5.2-1-.6.3-5h6.4v1.9h-4.3L14 8.8c.2-.1.5-.1.7-.2.2 0 .5-.1.7-.1.5 0 .9.1 1.4.2.4.1.8.3 1.1.6.3.2.6.6.8.9.2.4.3.9.3 1.4 0 .5-.1 1-.3 1.4-.2.4-.5.8-.9 1.1-.4.3-.8.5-1.3.7-.5.2-1 .3-1.5.3-.8 0-1.6-.1-2.3-.4-.6-.2-1.1-.6-1.6-1-.1-.1 1-1.5 1-1.5zM9 15H7v-4H3v4H1V5h2v4h4V5h2v10z',\n\t\t6: 'M9 15H7v-4H3v4H1V5h2v4h4V5h2v10zm8.6-7.5c-.2-.2-.5-.4-.8-.5-.6-.2-1.3-.2-1.9 0-.3.1-.6.3-.8.5l-.6.9c-.2.5-.2.9-.2 1.4.4-.3.8-.6 1.2-.8.4-.2.8-.3 1.3-.3.4 0 .8 0 1.2.2.4.1.7.3 1 .6.3.3.5.6.7.9.2.4.3.8.3 1.3s-.1.9-.3 1.4c-.2.4-.5.7-.8 1-.4.3-.8.5-1.2.6-1 .3-2 .3-3 0-.5-.2-1-.5-1.4-.9-.4-.4-.8-.9-1-1.5-.2-.6-.3-1.3-.3-2.1s.1-1.6.4-2.3c.2-.6.6-1.2 1-1.6.4-.4.9-.7 1.4-.9.6-.3 1.1-.4 1.7-.4.7 0 1.4.1 2 .3.5.2 1 .5 1.4.8 0 .1-1.3 1.4-1.3 1.4zm-2.4 5.8c.2 0 .4 0 .6-.1.2 0 .4-.1.5-.2.1-.1.3-.3.4-.5.1-.2.1-.5.1-.7 0-.4-.1-.8-.4-1.1-.3-.2-.7-.3-1.1-.3-.3 0-.7.1-1 .2-.4.2-.7.4-1 .7 0 .3.1.7.3 1 .1.2.3.4.4.6.2.1.3.3.5.3.2.1.5.2.7.1z',\n\t};\n\tif ( ! levelToPath.hasOwnProperty( level ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SVG\n\t\t\twidth=\"24\"\n\t\t\theight=\"24\"\n\t\t\tviewBox=\"0 0 20 20\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tisPressed={ isPressed }\n\t\t>\n\t\t\t<Path d={ levelToPath[ level ] } />\n\t\t</SVG>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { ToolbarDropdownMenu } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport HeadingLevelIcon from './heading-level-icon';\n\nconst HEADING_LEVELS = [ 1, 2, 3, 4, 5, 6 ];\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-library-heading-level-dropdown',\n};\n\n/** @typedef {import('@wordpress/element').WPComponent} WPComponent */\n\n/**\n * HeadingLevelDropdown props.\n *\n * @typedef WPHeadingLevelDropdownProps\n *\n * @property {number}                 selectedLevel The chosen heading level.\n * @property {(newValue:number)=>any} onChange      Callback to run when\n *                                                  toolbar value is changed.\n */\n\n/**\n * Dropdown for selecting a heading level (1 through 6).\n *\n * @param {WPHeadingLevelDropdownProps} props Component props.\n *\n * @return {WPComponent} The toolbar.\n */\nexport default function HeadingLevelDropdown( { selectedLevel, onChange } ) {\n\treturn (\n\t\t<ToolbarDropdownMenu\n\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\ticon={ <HeadingLevelIcon level={ selectedLevel } /> }\n\t\t\tlabel={ __( 'Change heading level' ) }\n\t\t\tcontrols={ HEADING_LEVELS.map( ( targetLevel ) => {\n\t\t\t\t{\n\t\t\t\t\tconst isActive = targetLevel === selectedLevel;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ticon: (\n\t\t\t\t\t\t\t<HeadingLevelIcon\n\t\t\t\t\t\t\t\tlevel={ targetLevel }\n\t\t\t\t\t\t\t\tisPressed={ isActive }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tlabel: sprintf(\n\t\t\t\t\t\t\t// translators: %s: heading level e.g: \"1\", \"2\", \"3\"\n\t\t\t\t\t\t\t__( 'Heading %d' ),\n\t\t\t\t\t\t\ttargetLevel\n\t\t\t\t\t\t),\n\t\t\t\t\t\tisActive,\n\t\t\t\t\t\tonClick() {\n\t\t\t\t\t\t\tonChange( targetLevel );\n\t\t\t\t\t\t},\n\t\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} ) }\n\t\t/>\n\t);\n}\n","/**\n * Internal dependencies\n */\nimport metadata from './block.json';\n\nconst { attributes, supports } = metadata;\n\nexport default [\n\t{\n\t\tattributes: {\n\t\t\t...attributes,\n\t\t\tsingleCommentLabel: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tmultipleCommentsLabel: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tsupports,\n\t\tmigrate: ( oldAttributes ) => {\n\t\t\tconst {\n\t\t\t\tsingleCommentLabel,\n\t\t\t\tmultipleCommentsLabel,\n\t\t\t\t...newAttributes\n\t\t\t} = oldAttributes;\n\t\t\treturn newAttributes;\n\t\t},\n\t\tisEligible: ( { multipleCommentsLabel, singleCommentLabel } ) =>\n\t\t\tmultipleCommentsLabel || singleCommentLabel,\n\t\tsave: () => null,\n\t},\n];\n","/**\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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tuseBlockProps,\n\tInspectorControls,\n} from '@wordpress/block-editor';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useEntityProp } from '@wordpress/core-data';\nimport { PanelBody, ToggleControl } from '@wordpress/components';\nimport { useState, useEffect } from '@wordpress/element';\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport HeadingLevelDropdown from '../heading/heading-level-dropdown';\n\nexport default function Edit( {\n\tattributes: { textAlign, showPostTitle, showCommentsCount, level },\n\tsetAttributes,\n\tcontext: { postType, postId },\n} ) {\n\tconst TagName = 'h' + level;\n\tconst [ commentsCount, setCommentsCount ] = useState();\n\tconst [ rawTitle ] = useEntityProp( 'postType', postType, 'title', postId );\n\tconst isSiteEditor = typeof postId === 'undefined';\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tuseEffect( () => {\n\t\tif ( isSiteEditor ) {\n\t\t\tsetCommentsCount( 3 );\n\t\t\treturn;\n\t\t}\n\t\tconst currentPostId = postId;\n\t\tapiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/comments', {\n\t\t\t\tpost: postId,\n\t\t\t\t_fields: 'id',\n\t\t\t} ),\n\t\t\tmethod: 'HEAD',\n\t\t\tparse: false,\n\t\t} )\n\t\t\t.then( ( res ) => {\n\t\t\t\t// Stale requests will have the `currentPostId` of an older closure.\n\t\t\t\tif ( currentPostId === postId ) {\n\t\t\t\t\tsetCommentsCount(\n\t\t\t\t\t\tparseInt( res.headers.get( 'X-WP-Total' ) )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( () => {\n\t\t\t\tsetCommentsCount( 0 );\n\t\t\t} );\n\t}, [ postId ] );\n\n\tconst blockControls = (\n\t\t<BlockControls group=\"block\">\n\t\t\t<AlignmentControl\n\t\t\t\tvalue={ textAlign }\n\t\t\t\tonChange={ ( newAlign ) =>\n\t\t\t\t\tsetAttributes( { textAlign: newAlign } )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<HeadingLevelDropdown\n\t\t\t\tselectedLevel={ level }\n\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t}\n\t\t\t/>\n\t\t</BlockControls>\n\t);\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Show post title' ) }\n\t\t\t\t\tchecked={ showPostTitle }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { showPostTitle: value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Show comments count' ) }\n\t\t\t\t\tchecked={ showCommentsCount }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { showCommentsCount: value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\tconst postTitle = isSiteEditor ? __( '“Post Title”' ) : `\"${ rawTitle }\"`;\n\n\tlet placeholder;\n\tif ( showCommentsCount && commentsCount !== undefined ) {\n\t\tif ( showPostTitle ) {\n\t\t\tif ( commentsCount === 1 ) {\n\t\t\t\t/* translators: %s: Post title. */\n\t\t\t\tplaceholder = sprintf( __( 'One response to %s' ), postTitle );\n\t\t\t} else {\n\t\t\t\tplaceholder = sprintf(\n\t\t\t\t\t/* translators: 1: Number of comments, 2: Post title. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'%1$s response to %2$s',\n\t\t\t\t\t\t'%1$s responses to %2$s',\n\t\t\t\t\t\tcommentsCount\n\t\t\t\t\t),\n\t\t\t\t\tcommentsCount,\n\t\t\t\t\tpostTitle\n\t\t\t\t);\n\t\t\t}\n\t\t} else if ( commentsCount === 1 ) {\n\t\t\tplaceholder = __( 'One response' );\n\t\t} else {\n\t\t\tplaceholder = sprintf(\n\t\t\t\t/* translators: %s: Number of comments. */\n\t\t\t\t_n( '%s response', '%s responses', commentsCount ),\n\t\t\t\tcommentsCount\n\t\t\t);\n\t\t}\n\t} else if ( showPostTitle ) {\n\t\tif ( commentsCount === 1 ) {\n\t\t\t/* translators: %s: Post title. */\n\t\t\tplaceholder = sprintf( __( 'Response to %s' ), postTitle );\n\t\t} else {\n\t\t\t/* translators: %s: Post title. */\n\t\t\tplaceholder = sprintf( __( 'Responses to %s' ), postTitle );\n\t\t}\n\t} else if ( commentsCount === 1 ) {\n\t\tplaceholder = __( 'Response' );\n\t} else {\n\t\tplaceholder = __( 'Responses' );\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ blockControls }\n\t\t\t{ inspectorControls }\n\t\t\t<TagName { ...blockProps }>{ placeholder }</TagName>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst cover = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h6.2v8.9l2.5-3.1 2.5 3.1V4.5h2.2c.4 0 .8.4.8.8v13.4z\" />\n\t</SVG>\n);\n\nexport default cover;\n","/**\n * WordPress dependencies\n */\nimport { getBlobTypeByURL, isBlobURL } from '@wordpress/blob';\n\nconst POSITION_CLASSNAMES = {\n\t'top left': 'is-position-top-left',\n\t'top center': 'is-position-top-center',\n\t'top right': 'is-position-top-right',\n\t'center left': 'is-position-center-left',\n\t'center center': 'is-position-center-center',\n\tcenter: 'is-position-center-center',\n\t'center right': 'is-position-center-right',\n\t'bottom left': 'is-position-bottom-left',\n\t'bottom center': 'is-position-bottom-center',\n\t'bottom right': 'is-position-bottom-right',\n};\n\nexport const IMAGE_BACKGROUND_TYPE = 'image';\nexport const VIDEO_BACKGROUND_TYPE = 'video';\nexport const COVER_MIN_HEIGHT = 50;\nexport const COVER_MAX_HEIGHT = 1000;\nexport const COVER_DEFAULT_HEIGHT = 300;\nexport const DEFAULT_FOCAL_POINT = { x: 0.5, y: 0.5 };\nexport const ALLOWED_MEDIA_TYPES = [ 'image', 'video' ];\n\nexport function mediaPosition( { x, y } = DEFAULT_FOCAL_POINT ) {\n\treturn `${ Math.round( x * 100 ) }% ${ Math.round( y * 100 ) }%`;\n}\n\nexport function dimRatioToClass( ratio ) {\n\treturn ratio === 50 || ! ratio === undefined\n\t\t? null\n\t\t: 'has-background-dim-' + 10 * Math.round( ratio / 10 );\n}\n\nexport function attributesFromMedia( setAttributes, dimRatio ) {\n\treturn ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( { url: undefined, id: undefined } );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tmedia.type = getBlobTypeByURL( media.url );\n\t\t}\n\n\t\tlet mediaType;\n\t\t// For media selections originated from a file upload.\n\t\tif ( media.media_type ) {\n\t\t\tif ( media.media_type === IMAGE_BACKGROUND_TYPE ) {\n\t\t\t\tmediaType = IMAGE_BACKGROUND_TYPE;\n\t\t\t} else {\n\t\t\t\t// only images and videos are accepted so if the media_type is not an image we can assume it is a video.\n\t\t\t\t// Videos contain the media type of 'file' in the object returned from the rest api.\n\t\t\t\tmediaType = VIDEO_BACKGROUND_TYPE;\n\t\t\t}\n\t\t} else {\n\t\t\t// For media selections originated from existing files in the media library.\n\t\t\tif (\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE &&\n\t\t\t\tmedia.type !== VIDEO_BACKGROUND_TYPE\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmediaType = media.type;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tdimRatio: dimRatio === 100 ? 50 : dimRatio,\n\t\t\turl: media.url,\n\t\t\tid: media.id,\n\t\t\talt: media?.alt,\n\t\t\tbackgroundType: mediaType,\n\t\t\tfocalPoint: undefined,\n\t\t\t...( mediaType === VIDEO_BACKGROUND_TYPE\n\t\t\t\t? { hasParallax: undefined }\n\t\t\t\t: {} ),\n\t\t} );\n\t};\n}\n\n/**\n * Checks of the contentPosition is the center (default) position.\n *\n * @param {string} contentPosition The current content position.\n * @return {boolean} Whether the contentPosition is center.\n */\nexport function isContentPositionCenter( contentPosition ) {\n\treturn (\n\t\t! contentPosition ||\n\t\tcontentPosition === 'center center' ||\n\t\tcontentPosition === 'center'\n\t);\n}\n\n/**\n * Retrieves the className for the current contentPosition.\n * The default position (center) will not have a className.\n *\n * @param {string} contentPosition The current content position.\n * @return {string} The className assigned to the contentPosition.\n */\nexport function getPositionClassName( contentPosition ) {\n\t/*\n\t * Only render a className if the contentPosition is not center (the default).\n\t */\n\tif ( isContentPositionCenter( contentPosition ) ) return '';\n\n\treturn POSITION_CLASSNAMES[ contentPosition ];\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tRichText,\n\tgetColorClassName,\n\tInnerBlocks,\n\t__experimentalGetGradientClass,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tIMAGE_BACKGROUND_TYPE,\n\tVIDEO_BACKGROUND_TYPE,\n\tgetPositionClassName,\n\tisContentPositionCenter,\n\tdimRatioToClass,\n} from './shared';\n\nfunction backgroundImageStyles( url ) {\n\treturn url ? { backgroundImage: `url(${ url })` } : {};\n}\n\n/**\n * Original function to determine the background opacity classname\n *\n * Used in deprecations: v1-7.\n *\n * @param {number} ratio ratio to use for opacity.\n * @return {string}       background opacity class   .\n */\nfunction dimRatioToClassV1( ratio ) {\n\treturn ratio === 0 || ratio === 50 || ! ratio\n\t\t? null\n\t\t: 'has-background-dim-' + 10 * Math.round( ratio / 10 );\n}\n\nfunction migrateDimRatio( attributes ) {\n\treturn {\n\t\t...attributes,\n\t\tdimRatio: ! attributes.url ? 100 : attributes.dimRatio,\n\t};\n}\n\nconst blockAttributes = {\n\turl: {\n\t\ttype: 'string',\n\t},\n\tid: {\n\t\ttype: 'number',\n\t},\n\thasParallax: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n\tdimRatio: {\n\t\ttype: 'number',\n\t\tdefault: 50,\n\t},\n\toverlayColor: {\n\t\ttype: 'string',\n\t},\n\tcustomOverlayColor: {\n\t\ttype: 'string',\n\t},\n\tbackgroundType: {\n\t\ttype: 'string',\n\t\tdefault: 'image',\n\t},\n\tfocalPoint: {\n\t\ttype: 'object',\n\t},\n};\n\nconst v8ToV10BlockAttributes = {\n\turl: {\n\t\ttype: 'string',\n\t},\n\tid: {\n\t\ttype: 'number',\n\t},\n\talt: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'img',\n\t\tattribute: 'alt',\n\t\tdefault: '',\n\t},\n\thasParallax: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n\tisRepeated: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n\tdimRatio: {\n\t\ttype: 'number',\n\t\tdefault: 100,\n\t},\n\toverlayColor: {\n\t\ttype: 'string',\n\t},\n\tcustomOverlayColor: {\n\t\ttype: 'string',\n\t},\n\tbackgroundType: {\n\t\ttype: 'string',\n\t\tdefault: 'image',\n\t},\n\tfocalPoint: {\n\t\ttype: 'object',\n\t},\n\tminHeight: {\n\t\ttype: 'number',\n\t},\n\tminHeightUnit: {\n\t\ttype: 'string',\n\t},\n\tgradient: {\n\t\ttype: 'string',\n\t},\n\tcustomGradient: {\n\t\ttype: 'string',\n\t},\n\tcontentPosition: {\n\t\ttype: 'string',\n\t},\n\tisDark: {\n\t\ttype: 'boolean',\n\t\tdefault: true,\n\t},\n\tallowedBlocks: {\n\t\ttype: 'array',\n\t},\n\ttemplateLock: {\n\t\ttype: [ 'string', 'boolean' ],\n\t\tenum: [ 'all', 'insert', false ],\n\t},\n};\n\nconst v7toV10BlockSupports = {\n\tanchor: true,\n\talign: true,\n\thtml: false,\n\tspacing: {\n\t\tpadding: true,\n\t\t__experimentalDefaultControls: {\n\t\t\tpadding: true,\n\t\t},\n\t},\n\tcolor: {\n\t\t__experimentalDuotone:\n\t\t\t'> .wp-block-cover__image-background, > .wp-block-cover__video-background',\n\t\ttext: false,\n\t\tbackground: false,\n\t},\n};\n\n// Deprecation for blocks that renders fixed background as backgroud from the main block container.\nconst v10 = {\n\tattributes: v8ToV10BlockAttributes,\n\tsupports: v7toV10BlockSupports,\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundType,\n\t\t\tgradient,\n\t\t\tcontentPosition,\n\t\t\tcustomGradient,\n\t\t\tcustomOverlayColor,\n\t\t\tdimRatio,\n\t\t\tfocalPoint,\n\t\t\tuseFeaturedImage,\n\t\t\thasParallax,\n\t\t\tisDark,\n\t\t\tisRepeated,\n\t\t\toverlayColor,\n\t\t\turl,\n\t\t\talt,\n\t\t\tid,\n\t\t\tminHeight: minHeightProp,\n\t\t\tminHeightUnit,\n\t\t} = attributes;\n\t\tconst overlayColorClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\toverlayColor\n\t\t);\n\t\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\t\tconst minHeight =\n\t\t\tminHeightProp && minHeightUnit\n\t\t\t\t? `${ minHeightProp }${ minHeightUnit }`\n\t\t\t\t: minHeightProp;\n\n\t\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\t\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\t\tconst isImgElement = ! ( hasParallax || isRepeated );\n\n\t\tconst style = {\n\t\t\t...( isImageBackground && ! isImgElement && ! useFeaturedImage\n\t\t\t\t? backgroundImageStyles( url )\n\t\t\t\t: {} ),\n\t\t\tminHeight: minHeight || undefined,\n\t\t};\n\n\t\tconst bgStyle = {\n\t\t\tbackgroundColor: ! overlayColorClass\n\t\t\t\t? customOverlayColor\n\t\t\t\t: undefined,\n\t\t\tbackground: customGradient ? customGradient : undefined,\n\t\t};\n\n\t\tconst objectPosition =\n\t\t\t// prettier-ignore\n\t\t\tfocalPoint && isImgElement\n\t\t\t\t ? `${ Math.round( focalPoint.x * 100 ) }% ${ Math.round( focalPoint.y * 100 ) }%`\n\t\t\t\t : undefined;\n\n\t\tconst classes = classnames(\n\t\t\t{\n\t\t\t\t'is-light': ! isDark,\n\t\t\t\t'has-parallax': hasParallax,\n\t\t\t\t'is-repeated': isRepeated,\n\t\t\t\t'has-custom-content-position':\n\t\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t\t},\n\t\t\tgetPositionClassName( contentPosition )\n\t\t);\n\n\t\tconst gradientValue = gradient || customGradient;\n\n\t\treturn (\n\t\t\t<div { ...useBlockProps.save( { className: classes, style } ) }>\n\t\t\t\t<span\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'wp-block-cover__background',\n\t\t\t\t\t\toverlayColorClass,\n\t\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t\t// For backwards compatibility. Former versions of the Cover Block applied\n\t\t\t\t\t\t\t// `.wp-block-cover__gradient-background` in the presence of\n\t\t\t\t\t\t\t// media, a gradient and a dim.\n\t\t\t\t\t\t\t'wp-block-cover__gradient-background':\n\t\t\t\t\t\t\t\turl && gradientValue && dimRatio !== 0,\n\t\t\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ bgStyle }\n\t\t\t\t/>\n\n\t\t\t\t{ ! useFeaturedImage &&\n\t\t\t\t\tisImageBackground &&\n\t\t\t\t\tisImgElement &&\n\t\t\t\t\turl && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'wp-block-cover__image-background',\n\t\t\t\t\t\t\t\tid ? `wp-image-${ id }` : null\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t{ isVideoBackground && url && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__video-background',\n\t\t\t\t\t\t\t'intrinsic-ignore'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tplaysInline\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<div\n\t\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\t\tclassName: 'wp-block-cover__inner-container',\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t},\n};\n\n// Deprecation for blocks with `minHeightUnit` set but no `minHeight`.\nconst v9 = {\n\tattributes: v8ToV10BlockAttributes,\n\tsupports: v7toV10BlockSupports,\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundType,\n\t\t\tgradient,\n\t\t\tcontentPosition,\n\t\t\tcustomGradient,\n\t\t\tcustomOverlayColor,\n\t\t\tdimRatio,\n\t\t\tfocalPoint,\n\t\t\thasParallax,\n\t\t\tisDark,\n\t\t\tisRepeated,\n\t\t\toverlayColor,\n\t\t\turl,\n\t\t\talt,\n\t\t\tid,\n\t\t\tminHeight: minHeightProp,\n\t\t\tminHeightUnit,\n\t\t} = attributes;\n\t\tconst overlayColorClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\toverlayColor\n\t\t);\n\t\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\t\tconst minHeight = minHeightUnit\n\t\t\t? `${ minHeightProp }${ minHeightUnit }`\n\t\t\t: minHeightProp;\n\n\t\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\t\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\t\tconst isImgElement = ! ( hasParallax || isRepeated );\n\n\t\tconst style = {\n\t\t\t...( isImageBackground && ! isImgElement\n\t\t\t\t? backgroundImageStyles( url )\n\t\t\t\t: {} ),\n\t\t\tminHeight: minHeight || undefined,\n\t\t};\n\n\t\tconst bgStyle = {\n\t\t\tbackgroundColor: ! overlayColorClass\n\t\t\t\t? customOverlayColor\n\t\t\t\t: undefined,\n\t\t\tbackground: customGradient ? customGradient : undefined,\n\t\t};\n\n\t\tconst objectPosition =\n\t\t\t// prettier-ignore\n\t\t\tfocalPoint && isImgElement\n\t\t\t\t ? `${ Math.round( focalPoint.x * 100 ) }% ${ Math.round( focalPoint.y * 100 ) }%`\n\t\t\t\t : undefined;\n\n\t\tconst classes = classnames(\n\t\t\t{\n\t\t\t\t'is-light': ! isDark,\n\t\t\t\t'has-parallax': hasParallax,\n\t\t\t\t'is-repeated': isRepeated,\n\t\t\t\t'has-custom-content-position':\n\t\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t\t},\n\t\t\tgetPositionClassName( contentPosition )\n\t\t);\n\n\t\tconst gradientValue = gradient || customGradient;\n\n\t\treturn (\n\t\t\t<div { ...useBlockProps.save( { className: classes, style } ) }>\n\t\t\t\t<span\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'wp-block-cover__background',\n\t\t\t\t\t\toverlayColorClass,\n\t\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t\t// For backwards compatibility. Former versions of the Cover Block applied\n\t\t\t\t\t\t\t// `.wp-block-cover__gradient-background` in the presence of\n\t\t\t\t\t\t\t// media, a gradient and a dim.\n\t\t\t\t\t\t\t'wp-block-cover__gradient-background':\n\t\t\t\t\t\t\t\turl && gradientValue && dimRatio !== 0,\n\t\t\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ bgStyle }\n\t\t\t\t/>\n\n\t\t\t\t{ isImageBackground && isImgElement && url && (\n\t\t\t\t\t<img\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__image-background',\n\t\t\t\t\t\t\tid ? `wp-image-${ id }` : null\n\t\t\t\t\t\t) }\n\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isVideoBackground && url && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__video-background',\n\t\t\t\t\t\t\t'intrinsic-ignore'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tplaysInline\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<div\n\t\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\t\tclassName: 'wp-block-cover__inner-container',\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t},\n};\n\n// v8: deprecated to remove duplicated gradient classes and swap `wp-block-cover__gradient-background` for `wp-block-cover__background`.\nconst v8 = {\n\tattributes: v8ToV10BlockAttributes,\n\tsupports: v7toV10BlockSupports,\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundType,\n\t\t\tgradient,\n\t\t\tcontentPosition,\n\t\t\tcustomGradient,\n\t\t\tcustomOverlayColor,\n\t\t\tdimRatio,\n\t\t\tfocalPoint,\n\t\t\thasParallax,\n\t\t\tisDark,\n\t\t\tisRepeated,\n\t\t\toverlayColor,\n\t\t\turl,\n\t\t\talt,\n\t\t\tid,\n\t\t\tminHeight: minHeightProp,\n\t\t\tminHeightUnit,\n\t\t} = attributes;\n\t\tconst overlayColorClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\toverlayColor\n\t\t);\n\t\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\t\tconst minHeight = minHeightUnit\n\t\t\t? `${ minHeightProp }${ minHeightUnit }`\n\t\t\t: minHeightProp;\n\n\t\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\t\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\t\tconst isImgElement = ! ( hasParallax || isRepeated );\n\n\t\tconst style = {\n\t\t\t...( isImageBackground && ! isImgElement\n\t\t\t\t? backgroundImageStyles( url )\n\t\t\t\t: {} ),\n\t\t\tminHeight: minHeight || undefined,\n\t\t};\n\n\t\tconst bgStyle = {\n\t\t\tbackgroundColor: ! overlayColorClass\n\t\t\t\t? customOverlayColor\n\t\t\t\t: undefined,\n\t\t\tbackground: customGradient ? customGradient : undefined,\n\t\t};\n\n\t\tconst objectPosition =\n\t\t\t// prettier-ignore\n\t\t\tfocalPoint && isImgElement\n\t\t\t\t ? `${ Math.round( focalPoint.x * 100 ) }% ${ Math.round( focalPoint.y * 100 ) }%`\n\t\t\t\t : undefined;\n\n\t\tconst classes = classnames(\n\t\t\t{\n\t\t\t\t'is-light': ! isDark,\n\t\t\t\t'has-parallax': hasParallax,\n\t\t\t\t'is-repeated': isRepeated,\n\t\t\t\t'has-custom-content-position':\n\t\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t\t},\n\t\t\tgetPositionClassName( contentPosition )\n\t\t);\n\n\t\treturn (\n\t\t\t<div { ...useBlockProps.save( { className: classes, style } ) }>\n\t\t\t\t<span\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\toverlayColorClass,\n\t\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t\t'wp-block-cover__gradient-background',\n\t\t\t\t\t\tgradientClass,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t\t'has-background-gradient':\n\t\t\t\t\t\t\t\tgradient || customGradient,\n\t\t\t\t\t\t\t[ gradientClass ]: ! url && gradientClass,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ bgStyle }\n\t\t\t\t/>\n\n\t\t\t\t{ isImageBackground && isImgElement && url && (\n\t\t\t\t\t<img\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__image-background',\n\t\t\t\t\t\t\tid ? `wp-image-${ id }` : null\n\t\t\t\t\t\t) }\n\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isVideoBackground && url && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__video-background',\n\t\t\t\t\t\t\t'intrinsic-ignore'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tplaysInline\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<div\n\t\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\t\tclassName: 'wp-block-cover__inner-container',\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t},\n};\n\nconst v7 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t\tisRepeated: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t\tminHeight: {\n\t\t\ttype: 'number',\n\t\t},\n\t\tminHeightUnit: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tgradient: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomGradient: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcontentPosition: {\n\t\t\ttype: 'string',\n\t\t},\n\t\talt: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'img',\n\t\t\tattribute: 'alt',\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tsupports: v7toV10BlockSupports,\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundType,\n\t\t\tgradient,\n\t\t\tcontentPosition,\n\t\t\tcustomGradient,\n\t\t\tcustomOverlayColor,\n\t\t\tdimRatio,\n\t\t\tfocalPoint,\n\t\t\thasParallax,\n\t\t\tisRepeated,\n\t\t\toverlayColor,\n\t\t\turl,\n\t\t\talt,\n\t\t\tid,\n\t\t\tminHeight: minHeightProp,\n\t\t\tminHeightUnit,\n\t\t} = attributes;\n\t\tconst overlayColorClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\toverlayColor\n\t\t);\n\t\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\t\tconst minHeight = minHeightUnit\n\t\t\t? `${ minHeightProp }${ minHeightUnit }`\n\t\t\t: minHeightProp;\n\n\t\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\t\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\t\tconst isImgElement = ! ( hasParallax || isRepeated );\n\n\t\tconst style = {\n\t\t\t...( isImageBackground && ! isImgElement\n\t\t\t\t? backgroundImageStyles( url )\n\t\t\t\t: {} ),\n\t\t\tbackgroundColor: ! overlayColorClass\n\t\t\t\t? customOverlayColor\n\t\t\t\t: undefined,\n\t\t\tbackground: customGradient && ! url ? customGradient : undefined,\n\t\t\tminHeight: minHeight || undefined,\n\t\t};\n\n\t\tconst objectPosition =\n\t\t\t// prettier-ignore\n\t\t\tfocalPoint && isImgElement\n\t\t\t\t\t? `${ Math.round( focalPoint.x * 100 ) }% ${ Math.round( focalPoint.y * 100 ) }%`\n\t\t\t\t\t: undefined;\n\n\t\tconst classes = classnames(\n\t\t\tdimRatioToClassV1( dimRatio ),\n\t\t\toverlayColorClass,\n\t\t\t{\n\t\t\t\t'has-background-dim': dimRatio !== 0,\n\t\t\t\t'has-parallax': hasParallax,\n\t\t\t\t'is-repeated': isRepeated,\n\t\t\t\t'has-background-gradient': gradient || customGradient,\n\t\t\t\t[ gradientClass ]: ! url && gradientClass,\n\t\t\t\t'has-custom-content-position':\n\t\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t\t},\n\t\t\tgetPositionClassName( contentPosition )\n\t\t);\n\n\t\treturn (\n\t\t\t<div { ...useBlockProps.save( { className: classes, style } ) }>\n\t\t\t\t{ url && ( gradient || customGradient ) && dimRatio !== 0 && (\n\t\t\t\t\t<span\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__gradient-background',\n\t\t\t\t\t\t\tgradientClass\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\tcustomGradient\n\t\t\t\t\t\t\t\t? { background: customGradient }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isImageBackground && isImgElement && url && (\n\t\t\t\t\t<img\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__image-background',\n\t\t\t\t\t\t\tid ? `wp-image-${ id }` : null\n\t\t\t\t\t\t) }\n\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isVideoBackground && url && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__video-background',\n\t\t\t\t\t\t\t'intrinsic-ignore'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tplaysInline\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<div className=\"wp-block-cover__inner-container\">\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n\tmigrate: migrateDimRatio,\n};\n\nconst v6 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t\tisRepeated: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t\tminHeight: {\n\t\t\ttype: 'number',\n\t\t},\n\t\tminHeightUnit: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tgradient: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomGradient: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcontentPosition: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundType,\n\t\t\tgradient,\n\t\t\tcontentPosition,\n\t\t\tcustomGradient,\n\t\t\tcustomOverlayColor,\n\t\t\tdimRatio,\n\t\t\tfocalPoint,\n\t\t\thasParallax,\n\t\t\tisRepeated,\n\t\t\toverlayColor,\n\t\t\turl,\n\t\t\tminHeight: minHeightProp,\n\t\t\tminHeightUnit,\n\t\t} = attributes;\n\t\tconst overlayColorClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\toverlayColor\n\t\t);\n\t\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\t\tconst minHeight = minHeightUnit\n\t\t\t? `${ minHeightProp }${ minHeightUnit }`\n\t\t\t: minHeightProp;\n\n\t\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\t\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\t\tconst style = isImageBackground ? backgroundImageStyles( url ) : {};\n\t\tconst videoStyle = {};\n\n\t\tif ( ! overlayColorClass ) {\n\t\t\tstyle.backgroundColor = customOverlayColor;\n\t\t}\n\n\t\tif ( customGradient && ! url ) {\n\t\t\tstyle.background = customGradient;\n\t\t}\n\t\tstyle.minHeight = minHeight || undefined;\n\n\t\tlet positionValue;\n\n\t\tif ( focalPoint ) {\n\t\t\tpositionValue = `${ Math.round(\n\t\t\t\tfocalPoint.x * 100\n\t\t\t) }% ${ Math.round( focalPoint.y * 100 ) }%`;\n\n\t\t\tif ( isImageBackground && ! hasParallax ) {\n\t\t\t\tstyle.backgroundPosition = positionValue;\n\t\t\t}\n\n\t\t\tif ( isVideoBackground ) {\n\t\t\t\tvideoStyle.objectPosition = positionValue;\n\t\t\t}\n\t\t}\n\n\t\tconst classes = classnames(\n\t\t\tdimRatioToClassV1( dimRatio ),\n\t\t\toverlayColorClass,\n\t\t\t{\n\t\t\t\t'has-background-dim': dimRatio !== 0,\n\t\t\t\t'has-parallax': hasParallax,\n\t\t\t\t'is-repeated': isRepeated,\n\t\t\t\t'has-background-gradient': gradient || customGradient,\n\t\t\t\t[ gradientClass ]: ! url && gradientClass,\n\t\t\t\t'has-custom-content-position':\n\t\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t\t},\n\t\t\tgetPositionClassName( contentPosition )\n\t\t);\n\n\t\treturn (\n\t\t\t<div { ...useBlockProps.save( { className: classes, style } ) }>\n\t\t\t\t{ url && ( gradient || customGradient ) && dimRatio !== 0 && (\n\t\t\t\t\t<span\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__gradient-background',\n\t\t\t\t\t\t\tgradientClass\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\tcustomGradient\n\t\t\t\t\t\t\t\t? { background: customGradient }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isVideoBackground && url && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tclassName=\"wp-block-cover__video-background\"\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tplaysInline\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ videoStyle }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<div className=\"wp-block-cover__inner-container\">\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n\tmigrate: migrateDimRatio,\n};\n\nconst v5 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t\tminHeight: {\n\t\t\ttype: 'number',\n\t\t},\n\t\tgradient: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomGradient: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundType,\n\t\t\tgradient,\n\t\t\tcustomGradient,\n\t\t\tcustomOverlayColor,\n\t\t\tdimRatio,\n\t\t\tfocalPoint,\n\t\t\thasParallax,\n\t\t\toverlayColor,\n\t\t\turl,\n\t\t\tminHeight,\n\t\t} = attributes;\n\t\tconst overlayColorClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\toverlayColor\n\t\t);\n\t\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\n\t\tconst style =\n\t\t\tbackgroundType === IMAGE_BACKGROUND_TYPE\n\t\t\t\t? backgroundImageStyles( url )\n\t\t\t\t: {};\n\t\tif ( ! overlayColorClass ) {\n\t\t\tstyle.backgroundColor = customOverlayColor;\n\t\t}\n\t\tif ( focalPoint && ! hasParallax ) {\n\t\t\tstyle.backgroundPosition = `${ Math.round(\n\t\t\t\tfocalPoint.x * 100\n\t\t\t) }% ${ Math.round( focalPoint.y * 100 ) }%`;\n\t\t}\n\t\tif ( customGradient && ! url ) {\n\t\t\tstyle.background = customGradient;\n\t\t}\n\t\tstyle.minHeight = minHeight || undefined;\n\n\t\tconst classes = classnames(\n\t\t\tdimRatioToClassV1( dimRatio ),\n\t\t\toverlayColorClass,\n\t\t\t{\n\t\t\t\t'has-background-dim': dimRatio !== 0,\n\t\t\t\t'has-parallax': hasParallax,\n\t\t\t\t'has-background-gradient': customGradient,\n\t\t\t\t[ gradientClass ]: ! url && gradientClass,\n\t\t\t}\n\t\t);\n\n\t\treturn (\n\t\t\t<div className={ classes } style={ style }>\n\t\t\t\t{ url && ( gradient || customGradient ) && dimRatio !== 0 && (\n\t\t\t\t\t<span\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__gradient-background',\n\t\t\t\t\t\t\tgradientClass\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\tcustomGradient\n\t\t\t\t\t\t\t\t? { background: customGradient }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ VIDEO_BACKGROUND_TYPE === backgroundType && url && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tclassName=\"wp-block-cover__video-background\"\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<div className=\"wp-block-cover__inner-container\">\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n\tmigrate: migrateDimRatio,\n};\n\nconst v4 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t\tminHeight: {\n\t\t\ttype: 'number',\n\t\t},\n\t\tgradient: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomGradient: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundType,\n\t\t\tgradient,\n\t\t\tcustomGradient,\n\t\t\tcustomOverlayColor,\n\t\t\tdimRatio,\n\t\t\tfocalPoint,\n\t\t\thasParallax,\n\t\t\toverlayColor,\n\t\t\turl,\n\t\t\tminHeight,\n\t\t} = attributes;\n\t\tconst overlayColorClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\toverlayColor\n\t\t);\n\t\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\n\t\tconst style =\n\t\t\tbackgroundType === IMAGE_BACKGROUND_TYPE\n\t\t\t\t? backgroundImageStyles( url )\n\t\t\t\t: {};\n\t\tif ( ! overlayColorClass ) {\n\t\t\tstyle.backgroundColor = customOverlayColor;\n\t\t}\n\t\tif ( focalPoint && ! hasParallax ) {\n\t\t\tstyle.backgroundPosition = `${ focalPoint.x * 100 }% ${\n\t\t\t\tfocalPoint.y * 100\n\t\t\t}%`;\n\t\t}\n\t\tif ( customGradient && ! url ) {\n\t\t\tstyle.background = customGradient;\n\t\t}\n\t\tstyle.minHeight = minHeight || undefined;\n\n\t\tconst classes = classnames(\n\t\t\tdimRatioToClassV1( dimRatio ),\n\t\t\toverlayColorClass,\n\t\t\t{\n\t\t\t\t'has-background-dim': dimRatio !== 0,\n\t\t\t\t'has-parallax': hasParallax,\n\t\t\t\t'has-background-gradient': customGradient,\n\t\t\t\t[ gradientClass ]: ! url && gradientClass,\n\t\t\t}\n\t\t);\n\n\t\treturn (\n\t\t\t<div className={ classes } style={ style }>\n\t\t\t\t{ url && ( gradient || customGradient ) && dimRatio !== 0 && (\n\t\t\t\t\t<span\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__gradient-background',\n\t\t\t\t\t\t\tgradientClass\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\tcustomGradient\n\t\t\t\t\t\t\t\t? { background: customGradient }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ VIDEO_BACKGROUND_TYPE === backgroundType && url && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tclassName=\"wp-block-cover__video-background\"\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<div className=\"wp-block-cover__inner-container\">\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n\tmigrate: migrateDimRatio,\n};\n\nconst v3 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t\ttitle: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'p',\n\t\t},\n\t\tcontentAlign: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'center',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundType,\n\t\t\tcontentAlign,\n\t\t\tcustomOverlayColor,\n\t\t\tdimRatio,\n\t\t\tfocalPoint,\n\t\t\thasParallax,\n\t\t\toverlayColor,\n\t\t\ttitle,\n\t\t\turl,\n\t\t} = attributes;\n\t\tconst overlayColorClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\toverlayColor\n\t\t);\n\t\tconst style =\n\t\t\tbackgroundType === IMAGE_BACKGROUND_TYPE\n\t\t\t\t? backgroundImageStyles( url )\n\t\t\t\t: {};\n\t\tif ( ! overlayColorClass ) {\n\t\t\tstyle.backgroundColor = customOverlayColor;\n\t\t}\n\t\tif ( focalPoint && ! hasParallax ) {\n\t\t\tstyle.backgroundPosition = `${ focalPoint.x * 100 }% ${\n\t\t\t\tfocalPoint.y * 100\n\t\t\t}%`;\n\t\t}\n\n\t\tconst classes = classnames(\n\t\t\tdimRatioToClassV1( dimRatio ),\n\t\t\toverlayColorClass,\n\t\t\t{\n\t\t\t\t'has-background-dim': dimRatio !== 0,\n\t\t\t\t'has-parallax': hasParallax,\n\t\t\t\t[ `has-${ contentAlign }-content` ]: contentAlign !== 'center',\n\t\t\t}\n\t\t);\n\n\t\treturn (\n\t\t\t<div className={ classes } style={ style }>\n\t\t\t\t{ VIDEO_BACKGROUND_TYPE === backgroundType && url && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tclassName=\"wp-block-cover__video-background\"\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! RichText.isEmpty( title ) && (\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\t\tclassName=\"wp-block-cover-text\"\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t},\n\tmigrate( attributes ) {\n\t\tconst newAttribs = {\n\t\t\t...attributes,\n\t\t\tdimRatio: ! attributes.url ? 100 : attributes.dimRatio,\n\t\t};\n\n\t\tconst { title, contentAlign, ...restAttributes } = newAttribs;\n\n\t\treturn [\n\t\t\trestAttributes,\n\t\t\t[\n\t\t\t\tcreateBlock( 'core/paragraph', {\n\t\t\t\t\tcontent: attributes.title,\n\t\t\t\t\talign: attributes.contentAlign,\n\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\tplaceholder: __( 'Write title…' ),\n\t\t\t\t} ),\n\t\t\t],\n\t\t];\n\t},\n};\n\nconst v2 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t\ttitle: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'p',\n\t\t},\n\t\tcontentAlign: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'center',\n\t\t},\n\t\talign: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\tclassName: false,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\turl,\n\t\t\ttitle,\n\t\t\thasParallax,\n\t\t\tdimRatio,\n\t\t\talign,\n\t\t\tcontentAlign,\n\t\t\toverlayColor,\n\t\t\tcustomOverlayColor,\n\t\t} = attributes;\n\t\tconst overlayColorClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\toverlayColor\n\t\t);\n\t\tconst style = backgroundImageStyles( url );\n\t\tif ( ! overlayColorClass ) {\n\t\t\tstyle.backgroundColor = customOverlayColor;\n\t\t}\n\n\t\tconst classes = classnames(\n\t\t\t'wp-block-cover-image',\n\t\t\tdimRatioToClassV1( dimRatio ),\n\t\t\toverlayColorClass,\n\t\t\t{\n\t\t\t\t'has-background-dim': dimRatio !== 0,\n\t\t\t\t'has-parallax': hasParallax,\n\t\t\t\t[ `has-${ contentAlign }-content` ]: contentAlign !== 'center',\n\t\t\t},\n\t\t\talign ? `align${ align }` : null\n\t\t);\n\n\t\treturn (\n\t\t\t<div className={ classes } style={ style }>\n\t\t\t\t{ ! RichText.isEmpty( title ) && (\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\t\tclassName=\"wp-block-cover-image-text\"\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t},\n\tmigrate( attributes ) {\n\t\tconst newAttribs = {\n\t\t\t...attributes,\n\t\t\tdimRatio: ! attributes.url ? 100 : attributes.dimRatio,\n\t\t};\n\n\t\tconst { title, contentAlign, align, ...restAttributes } = newAttribs;\n\n\t\treturn [\n\t\t\trestAttributes,\n\t\t\t[\n\t\t\t\tcreateBlock( 'core/paragraph', {\n\t\t\t\t\tcontent: attributes.title,\n\t\t\t\t\talign: attributes.contentAlign,\n\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\tplaceholder: __( 'Write title…' ),\n\t\t\t\t} ),\n\t\t\t],\n\t\t];\n\t},\n};\n\nconst v1 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t\ttitle: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'h2',\n\t\t},\n\t\talign: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcontentAlign: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'center',\n\t\t},\n\t},\n\tsupports: {\n\t\tclassName: false,\n\t},\n\tsave( { attributes } ) {\n\t\tconst { url, title, hasParallax, dimRatio, align } = attributes;\n\t\tconst style = backgroundImageStyles( url );\n\t\tconst classes = classnames(\n\t\t\t'wp-block-cover-image',\n\t\t\tdimRatioToClassV1( dimRatio ),\n\t\t\t{\n\t\t\t\t'has-background-dim': dimRatio !== 0,\n\t\t\t\t'has-parallax': hasParallax,\n\t\t\t},\n\t\t\talign ? `align${ align }` : null\n\t\t);\n\n\t\treturn (\n\t\t\t<section className={ classes } style={ style }>\n\t\t\t\t<RichText.Content tagName=\"h2\" value={ title } />\n\t\t\t</section>\n\t\t);\n\t},\n\tmigrate( attributes ) {\n\t\tconst newAttribs = {\n\t\t\t...attributes,\n\t\t\tdimRatio: ! attributes.url ? 100 : attributes.dimRatio,\n\t\t};\n\n\t\tconst { title, contentAlign, align, ...restAttributes } = newAttribs;\n\n\t\treturn [\n\t\t\trestAttributes,\n\t\t\t[\n\t\t\t\tcreateBlock( 'core/paragraph', {\n\t\t\t\t\tcontent: attributes.title,\n\t\t\t\t\talign: attributes.contentAlign,\n\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\tplaceholder: __( 'Write title…' ),\n\t\t\t\t} ),\n\t\t\t],\n\t\t];\n\t},\n};\n\nexport default [ v10, v9, v8, v7, v6, v5, v4, v3, v2, v1 ];\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return\"string\"==typeof r?N(r.trim(),y.string):\"object\"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","/*! Fast Average Color | © 2022 Denis Seleznev | MIT License | https://github.com/fast-average-color/fast-average-color */\nfunction toHex(num) {\n    var str = num.toString(16);\n    return str.length === 1 ? '0' + str : str;\n}\nfunction arrayToHex(arr) {\n    return '#' + arr.map(toHex).join('');\n}\nfunction isDark(color) {\n    // http://www.w3.org/TR/AERT#color-contrast\n    var result = (color[0] * 299 + color[1] * 587 + color[2] * 114) / 1000;\n    return result < 128;\n}\nfunction prepareIgnoredColor(color) {\n    if (!color) {\n        return [];\n    }\n    return isRGBArray(color) ? color : [color];\n}\nfunction isRGBArray(value) {\n    return Array.isArray(value[0]);\n}\nfunction isIgnoredColor(data, index, ignoredColor) {\n    for (var i = 0; i < ignoredColor.length; i++) {\n        if (isIgnoredColorAsNumbers(data, index, ignoredColor[i])) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction isIgnoredColorAsNumbers(data, index, ignoredColor) {\n    switch (ignoredColor.length) {\n        case 3:\n            // [red, green, blue]\n            if (isIgnoredRGBColor(data, index, ignoredColor)) {\n                return true;\n            }\n            break;\n        case 4:\n            // [red, green, blue, alpha]\n            if (isIgnoredRGBAColor(data, index, ignoredColor)) {\n                return true;\n            }\n            break;\n        case 5:\n            // [red, green, blue, alpha, threshold]\n            if (isIgnoredRGBAColorWithThreshold(data, index, ignoredColor)) {\n                return true;\n            }\n            break;\n        default:\n            return false;\n    }\n}\nfunction isIgnoredRGBColor(data, index, ignoredColor) {\n    // Ignore if the pixel are transparent.\n    if (data[index + 3] !== 255) {\n        return true;\n    }\n    if (data[index] === ignoredColor[0] &&\n        data[index + 1] === ignoredColor[1] &&\n        data[index + 2] === ignoredColor[2]) {\n        return true;\n    }\n    return false;\n}\nfunction isIgnoredRGBAColor(data, index, ignoredColor) {\n    if (data[index + 3] && ignoredColor[3]) {\n        return data[index] === ignoredColor[0] &&\n            data[index + 1] === ignoredColor[1] &&\n            data[index + 2] === ignoredColor[2] &&\n            data[index + 3] === ignoredColor[3];\n    }\n    // Ignore rgb components if the pixel are fully transparent.\n    return data[index + 3] === ignoredColor[3];\n}\nfunction inRange(colorComponent, ignoredColorComponent, value) {\n    return colorComponent >= (ignoredColorComponent - value) &&\n        colorComponent <= (ignoredColorComponent + value);\n}\nfunction isIgnoredRGBAColorWithThreshold(data, index, ignoredColor) {\n    var redIgnored = ignoredColor[0];\n    var greenIgnored = ignoredColor[1];\n    var blueIgnored = ignoredColor[2];\n    var alphaIgnored = ignoredColor[3];\n    var threshold = ignoredColor[4];\n    var alphaData = data[index + 3];\n    var alphaInRange = inRange(alphaData, alphaIgnored, threshold);\n    if (!alphaIgnored) {\n        return alphaInRange;\n    }\n    if (!alphaData && alphaInRange) {\n        return true;\n    }\n    if (inRange(data[index], redIgnored, threshold) &&\n        inRange(data[index + 1], greenIgnored, threshold) &&\n        inRange(data[index + 2], blueIgnored, threshold) &&\n        alphaInRange) {\n        return true;\n    }\n    return false;\n}\n\nfunction dominantAlgorithm(arr, len, options) {\n    var colorHash = {};\n    var divider = 24;\n    var ignoredColor = options.ignoredColor;\n    var step = options.step;\n    var max = [0, 0, 0, 0, 0];\n    for (var i = 0; i < len; i += step) {\n        var red = arr[i];\n        var green = arr[i + 1];\n        var blue = arr[i + 2];\n        var alpha = arr[i + 3];\n        if (ignoredColor && isIgnoredColor(arr, i, ignoredColor)) {\n            continue;\n        }\n        var key = Math.round(red / divider) + ',' +\n            Math.round(green / divider) + ',' +\n            Math.round(blue / divider);\n        if (colorHash[key]) {\n            colorHash[key] = [\n                colorHash[key][0] + red * alpha,\n                colorHash[key][1] + green * alpha,\n                colorHash[key][2] + blue * alpha,\n                colorHash[key][3] + alpha,\n                colorHash[key][4] + 1\n            ];\n        }\n        else {\n            colorHash[key] = [red * alpha, green * alpha, blue * alpha, alpha, 1];\n        }\n        if (max[4] < colorHash[key][4]) {\n            max = colorHash[key];\n        }\n    }\n    var redTotal = max[0];\n    var greenTotal = max[1];\n    var blueTotal = max[2];\n    var alphaTotal = max[3];\n    var count = max[4];\n    return alphaTotal ? [\n        Math.round(redTotal / alphaTotal),\n        Math.round(greenTotal / alphaTotal),\n        Math.round(blueTotal / alphaTotal),\n        Math.round(alphaTotal / count)\n    ] : options.defaultColor;\n}\n\nfunction simpleAlgorithm(arr, len, options) {\n    var redTotal = 0;\n    var greenTotal = 0;\n    var blueTotal = 0;\n    var alphaTotal = 0;\n    var count = 0;\n    var ignoredColor = options.ignoredColor;\n    var step = options.step;\n    for (var i = 0; i < len; i += step) {\n        var alpha = arr[i + 3];\n        var red = arr[i] * alpha;\n        var green = arr[i + 1] * alpha;\n        var blue = arr[i + 2] * alpha;\n        if (ignoredColor && isIgnoredColor(arr, i, ignoredColor)) {\n            continue;\n        }\n        redTotal += red;\n        greenTotal += green;\n        blueTotal += blue;\n        alphaTotal += alpha;\n        count++;\n    }\n    return alphaTotal ? [\n        Math.round(redTotal / alphaTotal),\n        Math.round(greenTotal / alphaTotal),\n        Math.round(blueTotal / alphaTotal),\n        Math.round(alphaTotal / count)\n    ] : options.defaultColor;\n}\n\nfunction sqrtAlgorithm(arr, len, options) {\n    var redTotal = 0;\n    var greenTotal = 0;\n    var blueTotal = 0;\n    var alphaTotal = 0;\n    var count = 0;\n    var ignoredColor = options.ignoredColor;\n    var step = options.step;\n    for (var i = 0; i < len; i += step) {\n        var red = arr[i];\n        var green = arr[i + 1];\n        var blue = arr[i + 2];\n        var alpha = arr[i + 3];\n        if (ignoredColor && isIgnoredColor(arr, i, ignoredColor)) {\n            continue;\n        }\n        redTotal += red * red * alpha;\n        greenTotal += green * green * alpha;\n        blueTotal += blue * blue * alpha;\n        alphaTotal += alpha;\n        count++;\n    }\n    return alphaTotal ? [\n        Math.round(Math.sqrt(redTotal / alphaTotal)),\n        Math.round(Math.sqrt(greenTotal / alphaTotal)),\n        Math.round(Math.sqrt(blueTotal / alphaTotal)),\n        Math.round(alphaTotal / count)\n    ] : options.defaultColor;\n}\n\nfunction getDefaultColor(options) {\n    return getOption(options, 'defaultColor', [0, 0, 0, 0]);\n}\nfunction getOption(options, name, defaultValue) {\n    return (options[name] === undefined ? defaultValue : options[name]);\n}\n\nvar MIN_SIZE = 10;\nvar MAX_SIZE = 100;\nfunction isSvg(filename) {\n    return filename.search(/\\.svg(\\?|$)/i) !== -1;\n}\nfunction getOriginalSize(resource) {\n    if (isInstanceOfHTMLImageElement(resource)) {\n        var width = resource.naturalWidth;\n        var height = resource.naturalHeight;\n        // For SVG images with only viewBox attribute\n        if (!resource.naturalWidth && isSvg(resource.src)) {\n            width = height = MAX_SIZE;\n        }\n        return {\n            width: width,\n            height: height,\n        };\n    }\n    if (isInstanceOfHTMLVideoElement(resource)) {\n        return {\n            width: resource.videoWidth,\n            height: resource.videoHeight\n        };\n    }\n    return {\n        width: resource.width,\n        height: resource.height\n    };\n}\nfunction getSrc(resource) {\n    if (isInstanceOfHTMLCanvasElement(resource)) {\n        return 'canvas';\n    }\n    if (isInstanceOfOffscreenCanvas(resource)) {\n        return 'offscreencanvas';\n    }\n    if (isInstanceOfImageBitmap(resource)) {\n        return 'imagebitmap';\n    }\n    return resource.src;\n}\nfunction isInstanceOfHTMLImageElement(resource) {\n    return typeof HTMLImageElement !== 'undefined' && resource instanceof HTMLImageElement;\n}\nfunction isInstanceOfOffscreenCanvas(resource) {\n    return typeof OffscreenCanvas !== 'undefined' && resource instanceof OffscreenCanvas;\n}\nfunction isInstanceOfHTMLVideoElement(resource) {\n    return typeof HTMLVideoElement !== 'undefined' && resource instanceof HTMLVideoElement;\n}\nfunction isInstanceOfHTMLCanvasElement(resource) {\n    return typeof HTMLCanvasElement !== 'undefined' && resource instanceof HTMLCanvasElement;\n}\nfunction isInstanceOfImageBitmap(resource) {\n    return typeof ImageBitmap !== 'undefined' && resource instanceof ImageBitmap;\n}\nfunction prepareSizeAndPosition(originalSize, options) {\n    var srcLeft = getOption(options, 'left', 0);\n    var srcTop = getOption(options, 'top', 0);\n    var srcWidth = getOption(options, 'width', originalSize.width);\n    var srcHeight = getOption(options, 'height', originalSize.height);\n    var destWidth = srcWidth;\n    var destHeight = srcHeight;\n    if (options.mode === 'precision') {\n        return {\n            srcLeft: srcLeft,\n            srcTop: srcTop,\n            srcWidth: srcWidth,\n            srcHeight: srcHeight,\n            destWidth: destWidth,\n            destHeight: destHeight\n        };\n    }\n    var factor;\n    if (srcWidth > srcHeight) {\n        factor = srcWidth / srcHeight;\n        destWidth = MAX_SIZE;\n        destHeight = Math.round(destWidth / factor);\n    }\n    else {\n        factor = srcHeight / srcWidth;\n        destHeight = MAX_SIZE;\n        destWidth = Math.round(destHeight / factor);\n    }\n    if (destWidth > srcWidth || destHeight > srcHeight ||\n        destWidth < MIN_SIZE || destHeight < MIN_SIZE) {\n        destWidth = srcWidth;\n        destHeight = srcHeight;\n    }\n    return {\n        srcLeft: srcLeft,\n        srcTop: srcTop,\n        srcWidth: srcWidth,\n        srcHeight: srcHeight,\n        destWidth: destWidth,\n        destHeight: destHeight\n    };\n}\nvar isWebWorkers = typeof window === 'undefined';\nfunction makeCanvas() {\n    return isWebWorkers ?\n        new OffscreenCanvas(1, 1) :\n        document.createElement('canvas');\n}\n\nvar ERROR_PREFIX = 'FastAverageColor: ';\nfunction outputError(message, silent, error) {\n    if (!silent) {\n        console.error(ERROR_PREFIX + message);\n        if (error) {\n            console.error(error);\n        }\n    }\n}\nfunction getError(text) {\n    return Error(ERROR_PREFIX + text);\n}\n\nvar FastAverageColor = /** @class */ (function () {\n    function FastAverageColor() {\n        this.canvas = null;\n        this.ctx = null;\n    }\n    /**\n     * Get asynchronously the average color from not loaded image.\n     */\n    FastAverageColor.prototype.getColorAsync = function (resource, options) {\n        if (!resource) {\n            return Promise.reject(getError('call .getColorAsync() without resource.'));\n        }\n        if (typeof resource === 'string') {\n            // Web workers\n            if (typeof Image === 'undefined') {\n                return Promise.reject(getError('resource as string is not supported in this environment'));\n            }\n            var img = new Image();\n            img.crossOrigin = options && options.crossOrigin || '';\n            img.src = resource;\n            return this.bindImageEvents(img, options);\n        }\n        else if (isInstanceOfHTMLImageElement(resource) && !resource.complete) {\n            return this.bindImageEvents(resource, options);\n        }\n        else {\n            var result = this.getColor(resource, options);\n            return result.error ? Promise.reject(result.error) : Promise.resolve(result);\n        }\n    };\n    /**\n     * Get the average color from images, videos and canvas.\n     */\n    FastAverageColor.prototype.getColor = function (resource, options) {\n        options = options || {};\n        var defaultColor = getDefaultColor(options);\n        if (!resource) {\n            outputError('call .getColor(null) without resource', options.silent);\n            return this.prepareResult(defaultColor);\n        }\n        var originalSize = getOriginalSize(resource);\n        var size = prepareSizeAndPosition(originalSize, options);\n        if (!size.srcWidth || !size.srcHeight || !size.destWidth || !size.destHeight) {\n            outputError(\"incorrect sizes for resource \\\"\".concat(getSrc(resource), \"\\\"\"), options.silent);\n            return this.prepareResult(defaultColor);\n        }\n        if (!this.canvas) {\n            this.canvas = makeCanvas();\n        }\n        if (!this.ctx) {\n            this.ctx = this.canvas.getContext && this.canvas.getContext('2d');\n            if (!this.ctx) {\n                outputError('Canvas Context 2D is not supported in this browser', options.silent);\n                return this.prepareResult(defaultColor);\n            }\n        }\n        this.canvas.width = size.destWidth;\n        this.canvas.height = size.destHeight;\n        var value = defaultColor;\n        try {\n            this.ctx.clearRect(0, 0, size.destWidth, size.destHeight);\n            this.ctx.drawImage(resource, size.srcLeft, size.srcTop, size.srcWidth, size.srcHeight, 0, 0, size.destWidth, size.destHeight);\n            var bitmapData = this.ctx.getImageData(0, 0, size.destWidth, size.destHeight).data;\n            value = this.getColorFromArray4(bitmapData, options);\n        }\n        catch (e) {\n            outputError(\"security error (CORS) for resource \".concat(getSrc(resource), \".\\nDetails: https://developer.mozilla.org/en/docs/Web/HTML/CORS_enabled_image\"), options.silent, e);\n        }\n        return this.prepareResult(value);\n    };\n    /**\n     * Get the average color from a array when 1 pixel is 4 bytes.\n     */\n    FastAverageColor.prototype.getColorFromArray4 = function (arr, options) {\n        options = options || {};\n        var bytesPerPixel = 4;\n        var arrLength = arr.length;\n        var defaultColor = getDefaultColor(options);\n        if (arrLength < bytesPerPixel) {\n            return defaultColor;\n        }\n        var len = arrLength - arrLength % bytesPerPixel;\n        var step = (options.step || 1) * bytesPerPixel;\n        var algorithm;\n        switch (options.algorithm || 'sqrt') {\n            case 'simple':\n                algorithm = simpleAlgorithm;\n                break;\n            case 'sqrt':\n                algorithm = sqrtAlgorithm;\n                break;\n            case 'dominant':\n                algorithm = dominantAlgorithm;\n                break;\n            default:\n                throw getError(\"\".concat(options.algorithm, \" is unknown algorithm\"));\n        }\n        return algorithm(arr, len, {\n            defaultColor: defaultColor,\n            ignoredColor: prepareIgnoredColor(options.ignoredColor),\n            step: step\n        });\n    };\n    /**\n     * Get color data from value ([r, g, b, a]).\n     */\n    FastAverageColor.prototype.prepareResult = function (value) {\n        var rgb = value.slice(0, 3);\n        var rgba = [value[0], value[1], value[2], value[3] / 255];\n        var isDarkColor = isDark(value);\n        return {\n            value: [value[0], value[1], value[2], value[3]],\n            rgb: 'rgb(' + rgb.join(',') + ')',\n            rgba: 'rgba(' + rgba.join(',') + ')',\n            hex: arrayToHex(rgb),\n            hexa: arrayToHex(value),\n            isDark: isDarkColor,\n            isLight: !isDarkColor\n        };\n    };\n    /**\n     * Destroy the instance.\n     */\n    FastAverageColor.prototype.destroy = function () {\n        if (this.canvas) {\n            this.canvas.width = 1;\n            this.canvas.height = 1;\n            this.canvas = null;\n        }\n        this.ctx = null;\n    };\n    FastAverageColor.prototype.bindImageEvents = function (resource, options) {\n        var _this = this;\n        return new Promise(function (resolve, reject) {\n            var onload = function () {\n                unbindEvents();\n                var result = _this.getColor(resource, options);\n                if (result.error) {\n                    reject(result.error);\n                }\n                else {\n                    resolve(result);\n                }\n            };\n            var onerror = function () {\n                unbindEvents();\n                reject(getError(\"Error loading image \\\"\".concat(resource.src, \"\\\".\")));\n            };\n            var onabort = function () {\n                unbindEvents();\n                reject(getError(\"Image \\\"\".concat(resource.src, \"\\\" loading aborted\")));\n            };\n            var unbindEvents = function () {\n                resource.removeEventListener('load', onload);\n                resource.removeEventListener('error', onerror);\n                resource.removeEventListener('abort', onabort);\n            };\n            resource.addEventListener('load', onload);\n            resource.addEventListener('error', onerror);\n            resource.addEventListener('abort', onabort);\n        });\n    };\n    return FastAverageColor;\n}());\n\nexport { FastAverageColor };\n","/**\n * External dependencies\n */\nimport { FastAverageColor } from 'fast-average-color';\nimport { colord } from 'colord';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\n\nfunction retrieveFastAverageColor() {\n\tif ( ! retrieveFastAverageColor.fastAverageColor ) {\n\t\tretrieveFastAverageColor.fastAverageColor = new FastAverageColor();\n\t}\n\treturn retrieveFastAverageColor.fastAverageColor;\n}\n\n/**\n * useCoverIsDark is a hook that returns a boolean variable specifying if the cover\n * background is dark or not.\n *\n * @param {?string} url          Url of the media background.\n * @param {?number} dimRatio     Transparency of the overlay color. If an image and\n *                               color are set, dimRatio is used to decide what is used\n *                               for background darkness checking purposes.\n * @param {?string} overlayColor String containing the overlay color value if one exists.\n * @param {?Object} elementRef   If a media background is set, elementRef should contain a reference to a\n *                               dom element that renders that media.\n *\n * @return {boolean} True if the cover background is considered \"dark\" and false otherwise.\n */\nexport default function useCoverIsDark(\n\turl,\n\tdimRatio = 50,\n\toverlayColor,\n\telementRef\n) {\n\tconst [ isDark, setIsDark ] = useState( false );\n\tuseEffect( () => {\n\t\t// If opacity is lower than 50 the dominant color is the image or video color,\n\t\t// so use that color for the dark mode computation.\n\t\tif ( url && dimRatio <= 50 && elementRef.current ) {\n\t\t\tretrieveFastAverageColor()\n\t\t\t\t.getColorAsync( elementRef.current, {\n\t\t\t\t\t// Previously the default color was white, but that changed\n\t\t\t\t\t// in v6.0.0 so it has to be manually set now.\n\t\t\t\t\tdefaultColor: [ 255, 255, 255, 255 ],\n\t\t\t\t\t// Errors that come up don't reject the promise, so error\n\t\t\t\t\t// logging has to be silenced with this option.\n\t\t\t\t\tsilent: process.env.NODE_ENV === 'production',\n\t\t\t\t} )\n\t\t\t\t.then( ( color ) => setIsDark( color.isDark ) );\n\t\t}\n\t}, [ url, url && dimRatio <= 50 && elementRef.current, setIsDark ] );\n\tuseEffect( () => {\n\t\t// If opacity is greater than 50 the dominant color is the overlay color,\n\t\t// so use that color for the dark mode computation.\n\t\tif ( dimRatio > 50 || ! url ) {\n\t\t\tif ( ! overlayColor ) {\n\t\t\t\t// If no overlay color exists the overlay color is black (isDark )\n\t\t\t\tsetIsDark( true );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsDark( colord( overlayColor ).isDark() );\n\t\t}\n\t}, [ overlayColor, dimRatio > 50 || ! url, setIsDark ] );\n\tuseEffect( () => {\n\t\tif ( ! url && ! overlayColor ) {\n\t\t\t// Reset isDark.\n\t\t\tsetIsDark( false );\n\t\t}\n\t}, [ ! url && ! overlayColor, setIsDark ] );\n\treturn isDark;\n}\n","/**\n * WordPress dependencies\n */\nimport { Fragment, useMemo } from '@wordpress/element';\nimport {\n\tBaseControl,\n\tButton,\n\tExternalLink,\n\tFocalPointPicker,\n\tPanelBody,\n\tPanelRow,\n\tRangeControl,\n\tTextareaControl,\n\tToggleControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\tInspectorControls,\n\tuseSetting,\n\t__experimentalColorGradientSettingsDropdown as ColorGradientSettingsDropdown,\n\t__experimentalUseGradient,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { COVER_MIN_HEIGHT, mediaPosition } from '../shared';\n\nfunction CoverHeightInput( {\n\tonChange,\n\tonUnitChange,\n\tunit = 'px',\n\tvalue = '',\n} ) {\n\tconst instanceId = useInstanceId( UnitControl );\n\tconst inputId = `block-cover-height-input-${ instanceId }`;\n\tconst isPx = unit === 'px';\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t\t'vh',\n\t\t],\n\t\tdefaultValues: { px: 430, '%': 20, em: 20, rem: 20, vw: 20, vh: 50 },\n\t} );\n\n\tconst handleOnChange = ( unprocessedValue ) => {\n\t\tconst inputValue =\n\t\t\tunprocessedValue !== ''\n\t\t\t\t? parseFloat( unprocessedValue )\n\t\t\t\t: undefined;\n\n\t\tif ( isNaN( inputValue ) && inputValue !== undefined ) {\n\t\t\treturn;\n\t\t}\n\t\tonChange( inputValue );\n\t};\n\n\tconst computedValue = useMemo( () => {\n\t\tconst [ parsedQuantity ] = parseQuantityAndUnitFromRawValue( value );\n\t\treturn [ parsedQuantity, unit ].join( '' );\n\t}, [ unit, value ] );\n\n\tconst min = isPx ? COVER_MIN_HEIGHT : 0;\n\n\treturn (\n\t\t<BaseControl label={ __( 'Minimum height of cover' ) } id={ inputId }>\n\t\t\t<UnitControl\n\t\t\t\tid={ inputId }\n\t\t\t\tisResetValueOnUnitChange\n\t\t\t\tmin={ min }\n\t\t\t\tonChange={ handleOnChange }\n\t\t\t\tonUnitChange={ onUnitChange }\n\t\t\t\tstyle={ { maxWidth: 80 } }\n\t\t\t\tunits={ units }\n\t\t\t\tvalue={ computedValue }\n\t\t\t/>\n\t\t</BaseControl>\n\t);\n}\nexport default function CoverInspectorControls( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n\tsetOverlayColor,\n\tcoverRef,\n\tcurrentSettings,\n} ) {\n\tconst {\n\t\tuseFeaturedImage,\n\t\tdimRatio,\n\t\tfocalPoint,\n\t\thasParallax,\n\t\tisRepeated,\n\t\tminHeight,\n\t\tminHeightUnit,\n\t\talt,\n\t} = attributes;\n\tconst {\n\t\tisVideoBackground,\n\t\tisImageBackground,\n\t\tmediaElement,\n\t\turl,\n\t\tisImgElement,\n\t\toverlayColor,\n\t} = currentSettings;\n\n\tconst { gradientValue, setGradient } = __experimentalUseGradient();\n\n\tconst toggleParallax = () => {\n\t\tsetAttributes( {\n\t\t\thasParallax: ! hasParallax,\n\t\t\t...( ! hasParallax ? { focalPoint: undefined } : {} ),\n\t\t} );\n\t};\n\n\tconst toggleIsRepeated = () => {\n\t\tsetAttributes( {\n\t\t\tisRepeated: ! isRepeated,\n\t\t} );\n\t};\n\n\tconst showFocalPointPicker =\n\t\tisVideoBackground ||\n\t\t( isImageBackground && ( ! hasParallax || isRepeated ) );\n\n\tconst imperativeFocalPointPreview = ( value ) => {\n\t\tconst [ styleOfRef, property ] = mediaElement.current\n\t\t\t? [ mediaElement.current.style, 'objectPosition' ]\n\t\t\t: [ coverRef.current.style, 'backgroundPosition' ];\n\t\tstyleOfRef[ property ] = mediaPosition( value );\n\t};\n\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t{ !! url && (\n\t\t\t\t\t<PanelBody title={ __( 'Media settings' ) }>\n\t\t\t\t\t\t{ isImageBackground && (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\t\t\t\t\t\tchecked={ hasParallax }\n\t\t\t\t\t\t\t\t\tonChange={ toggleParallax }\n\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Repeated background' ) }\n\t\t\t\t\t\t\t\t\tchecked={ isRepeated }\n\t\t\t\t\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showFocalPointPicker && (\n\t\t\t\t\t\t\t<FocalPointPicker\n\t\t\t\t\t\t\t\tlabel={ __( 'Focal point picker' ) }\n\t\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\t\tvalue={ focalPoint }\n\t\t\t\t\t\t\t\tonDragStart={ imperativeFocalPointPreview }\n\t\t\t\t\t\t\t\tonDrag={ imperativeFocalPointPreview }\n\t\t\t\t\t\t\t\tonChange={ ( newFocalPoint ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tfocalPoint: newFocalPoint,\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/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! useFeaturedImage &&\n\t\t\t\t\t\t\turl &&\n\t\t\t\t\t\t\tisImageBackground &&\n\t\t\t\t\t\t\tisImgElement && (\n\t\t\t\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t\t\t'Alt text (alternative text)'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tvalue={ alt }\n\t\t\t\t\t\t\t\t\tonChange={ ( newAlt ) =>\n\t\t\t\t\t\t\t\t\t\tsetAttributes( { alt: newAlt } )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<ExternalLink href=\"https://www.w3.org/WAI/tutorials/images/decision-tree\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the image'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Leave empty if the image is purely decorative.'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t<PanelRow>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\t\tclassName=\"block-library-cover__reset-button\"\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\turl: undefined,\n\t\t\t\t\t\t\t\t\t\tid: undefined,\n\t\t\t\t\t\t\t\t\t\tbackgroundType: undefined,\n\t\t\t\t\t\t\t\t\t\tfocalPoint: undefined,\n\t\t\t\t\t\t\t\t\t\thasParallax: undefined,\n\t\t\t\t\t\t\t\t\t\tisRepeated: undefined,\n\t\t\t\t\t\t\t\t\t\tuseFeaturedImage: false,\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>\n\t\t\t\t\t\t\t\t{ __( 'Clear Media' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</PanelRow>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls __experimentalGroup=\"color\">\n\t\t\t\t<ColorGradientSettingsDropdown\n\t\t\t\t\t__experimentalHasMultipleOrigins\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\tsettings={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcolorValue: overlayColor.color,\n\t\t\t\t\t\t\tgradientValue,\n\t\t\t\t\t\t\tlabel: __( 'Overlay' ),\n\t\t\t\t\t\t\tonColorChange: setOverlayColor,\n\t\t\t\t\t\t\tonGradientChange: setGradient,\n\t\t\t\t\t\t\tisShownByDefault: true,\n\t\t\t\t\t\t\tresetAllFilter: () => ( {\n\t\t\t\t\t\t\t\toverlayColor: undefined,\n\t\t\t\t\t\t\t\tcustomOverlayColor: undefined,\n\t\t\t\t\t\t\t\tgradient: undefined,\n\t\t\t\t\t\t\t\tcustomGradient: undefined,\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\tpanelId={ clientId }\n\t\t\t\t\t{ ...colorGradientSettings }\n\t\t\t\t/>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => {\n\t\t\t\t\t\t// If there's a media background the dimRatio will be\n\t\t\t\t\t\t// defaulted to 50 whereas it will be 100 for colors.\n\t\t\t\t\t\treturn dimRatio === undefined\n\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t: dimRatio !== ( url ? 50 : 100 );\n\t\t\t\t\t} }\n\t\t\t\t\tlabel={ __( 'Overlay opacity' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( { dimRatio: url ? 50 : 100 } )\n\t\t\t\t\t}\n\t\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\t\tdimRatio: url ? 50 : 100,\n\t\t\t\t\t} ) }\n\t\t\t\t\tisShownByDefault\n\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tlabel={ __( 'Overlay opacity' ) }\n\t\t\t\t\t\tvalue={ dimRatio }\n\t\t\t\t\t\tonChange={ ( newDimRation ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdimRatio: newDimRation,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ 100 }\n\t\t\t\t\t\tstep={ 10 }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls __experimentalGroup=\"dimensions\">\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! minHeight }\n\t\t\t\t\tlabel={ __( 'Minimum height' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tminHeight: undefined,\n\t\t\t\t\t\t\tminHeightUnit: undefined,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\t\tminHeight: undefined,\n\t\t\t\t\t\tminHeightUnit: undefined,\n\t\t\t\t\t} ) }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t>\n\t\t\t\t\t<CoverHeightInput\n\t\t\t\t\t\tvalue={ minHeight }\n\t\t\t\t\t\tunit={ minHeightUnit }\n\t\t\t\t\t\tonChange={ ( newMinHeight ) =>\n\t\t\t\t\t\t\tsetAttributes( { minHeight: newMinHeight } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonUnitChange={ ( nextUnit ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tminHeightUnit: nextUnit,\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</ToolsPanelItem>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\n\nimport {\n\tBlockControls,\n\tMediaReplaceFlow,\n\t__experimentalBlockAlignmentMatrixControl as BlockAlignmentMatrixControl,\n\t__experimentalBlockFullHeightAligmentControl as FullHeightAlignmentControl,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_MEDIA_TYPES } from '../shared';\n\nexport default function CoverBlockControls( {\n\tattributes,\n\tsetAttributes,\n\tonSelectMedia,\n\tcurrentSettings,\n\ttoggleUseFeaturedImage,\n} ) {\n\tconst { contentPosition, id, useFeaturedImage, minHeight, minHeightUnit } =\n\t\tattributes;\n\tconst { hasInnerBlocks, url } = currentSettings;\n\n\tconst [ prevMinHeightValue, setPrevMinHeightValue ] = useState( minHeight );\n\tconst [ prevMinHeightUnit, setPrevMinHeightUnit ] =\n\t\tuseState( minHeightUnit );\n\tconst isMinFullHeight = minHeightUnit === 'vh' && minHeight === 100;\n\tconst toggleMinFullHeight = () => {\n\t\tif ( isMinFullHeight ) {\n\t\t\t// If there aren't previous values, take the default ones.\n\t\t\tif ( prevMinHeightUnit === 'vh' && prevMinHeightValue === 100 ) {\n\t\t\t\treturn setAttributes( {\n\t\t\t\t\tminHeight: undefined,\n\t\t\t\t\tminHeightUnit: undefined,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Set the previous values of height.\n\t\t\treturn setAttributes( {\n\t\t\t\tminHeight: prevMinHeightValue,\n\t\t\t\tminHeightUnit: prevMinHeightUnit,\n\t\t\t} );\n\t\t}\n\n\t\tsetPrevMinHeightValue( minHeight );\n\t\tsetPrevMinHeightUnit( minHeightUnit );\n\n\t\t// Set full height.\n\t\treturn setAttributes( {\n\t\t\tminHeight: 100,\n\t\t\tminHeightUnit: 'vh',\n\t\t} );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<BlockAlignmentMatrixControl\n\t\t\t\t\tlabel={ __( 'Change content position' ) }\n\t\t\t\t\tvalue={ contentPosition }\n\t\t\t\t\tonChange={ ( nextPosition ) =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tcontentPosition: nextPosition,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tisDisabled={ ! hasInnerBlocks }\n\t\t\t\t/>\n\t\t\t\t<FullHeightAlignmentControl\n\t\t\t\t\tisActive={ isMinFullHeight }\n\t\t\t\t\tonToggle={ toggleMinFullHeight }\n\t\t\t\t\tisDisabled={ ! hasInnerBlocks }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\taccept=\"image/*,video/*\"\n\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\tonToggleFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t\tuseFeaturedImage={ useFeaturedImage }\n\t\t\t\t\tname={ ! url ? __( 'Add Media' ) : __( 'Replace' ) }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { BlockIcon, MediaPlaceholder } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { cover as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_MEDIA_TYPES } from '../shared';\n\nexport default function CoverPlaceholder( {\n\tdisableMediaButtons = false,\n\tchildren,\n\tonSelectMedia,\n\tonError,\n\tstyle,\n\ttoggleUseFeaturedImage,\n} ) {\n\treturn (\n\t\t<MediaPlaceholder\n\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\tlabels={ {\n\t\t\t\ttitle: __( 'Cover' ),\n\t\t\t\tinstructions: __(\n\t\t\t\t\t'Drag and drop onto this block, upload, or select existing media from your library.'\n\t\t\t\t),\n\t\t\t} }\n\t\t\tonSelect={ onSelectMedia }\n\t\t\taccept=\"image/*,video/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tdisableMediaButtons={ disableMediaButtons }\n\t\t\tonToggleFeaturedImage={ toggleUseFeaturedImage }\n\t\t\tonError={ onError }\n\t\t\tstyle={ style }\n\t\t>\n\t\t\t{ children }\n\t\t</MediaPlaceholder>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { ResizableBox } from '@wordpress/components';\n\nconst RESIZABLE_BOX_ENABLE_OPTION = {\n\ttop: false,\n\tright: false,\n\tbottom: true,\n\tleft: false,\n\ttopRight: false,\n\tbottomRight: false,\n\tbottomLeft: false,\n\ttopLeft: false,\n};\n\nexport default function ResizableCover( {\n\tclassName,\n\tonResizeStart,\n\tonResize,\n\tonResizeStop,\n\t...props\n} ) {\n\tconst [ isResizing, setIsResizing ] = useState( false );\n\n\treturn (\n\t\t<ResizableBox\n\t\t\tclassName={ classnames( className, {\n\t\t\t\t'is-resizing': isResizing,\n\t\t\t} ) }\n\t\t\tenable={ RESIZABLE_BOX_ENABLE_OPTION }\n\t\t\tonResizeStart={ ( _event, _direction, elt ) => {\n\t\t\t\tonResizeStart( elt.clientHeight );\n\t\t\t\tonResize( elt.clientHeight );\n\t\t\t} }\n\t\t\tonResize={ ( _event, _direction, elt ) => {\n\t\t\t\tonResize( elt.clientHeight );\n\t\t\t\tif ( ! isResizing ) {\n\t\t\t\t\tsetIsResizing( true );\n\t\t\t\t}\n\t\t\t} }\n\t\t\tonResizeStop={ ( _event, _direction, elt ) => {\n\t\t\t\tonResizeStop( elt.clientHeight );\n\t\t\t\tsetIsResizing( false );\n\t\t\t} }\n\t\t\t__experimentalShowTooltip\n\t\t\t__experimentalTooltipProps={ {\n\t\t\t\taxis: 'y',\n\t\t\t\tposition: 'bottom',\n\t\t\t\tisVisible: isResizing,\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\n\n/**\n * WordPress dependencies\n */\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useEffect, useRef } from '@wordpress/element';\nimport { Placeholder, Spinner } from '@wordpress/components';\nimport { compose } from '@wordpress/compose';\nimport {\n\twithColors,\n\tColorPalette,\n\tuseBlockProps,\n\tuseSetting,\n\tuseInnerBlocksProps,\n\t__experimentalUseGradient,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { isBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport {\n\tattributesFromMedia,\n\tIMAGE_BACKGROUND_TYPE,\n\tVIDEO_BACKGROUND_TYPE,\n\tdimRatioToClass,\n\tisContentPositionCenter,\n\tgetPositionClassName,\n\tmediaPosition,\n} from '../shared';\nimport useCoverIsDark from './use-cover-is-dark';\nimport CoverInspectorControls from './inspector-controls';\nimport CoverBlockControls from './block-controls';\nimport CoverPlaceholder from './cover-placeholder';\nimport ResizableCover from './resizable-cover';\n\nextend( [ namesPlugin ] );\n\nfunction getInnerBlocksTemplate( attributes ) {\n\treturn [\n\t\t[\n\t\t\t'core/paragraph',\n\t\t\t{\n\t\t\t\talign: 'center',\n\t\t\t\tplaceholder: __( 'Write title…' ),\n\t\t\t\t...attributes,\n\t\t\t},\n\t\t],\n\t];\n}\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily while\n * the media (image or video) is being uploaded and will not have an id allocated yet.\n *\n * @param {number} id  The id of the media.\n * @param {string} url The url of the media.\n *\n * @return {boolean} Is the URL a Blob URL.\n */\nconst isTemporaryMedia = ( id, url ) => ! id && isBlobURL( url );\n\nfunction CoverEdit( {\n\tattributes,\n\tclientId,\n\tisSelected,\n\toverlayColor,\n\tsetAttributes,\n\tsetOverlayColor,\n\ttoggleSelection,\n\tcontext: { postId, postType },\n} ) {\n\tconst {\n\t\tcontentPosition,\n\t\tid,\n\t\tuseFeaturedImage,\n\t\tdimRatio,\n\t\tfocalPoint,\n\t\thasParallax,\n\t\tisDark,\n\t\tisRepeated,\n\t\tminHeight,\n\t\tminHeightUnit,\n\t\talt,\n\t\tallowedBlocks,\n\t\ttemplateLock,\n\t} = attributes;\n\n\tconst [ featuredImage ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'featured_media',\n\t\tpostId\n\t);\n\n\tconst media = useSelect(\n\t\t( select ) =>\n\t\t\tfeaturedImage &&\n\t\t\tselect( coreStore ).getMedia( featuredImage, { context: 'view' } ),\n\t\t[ featuredImage ]\n\t);\n\tconst mediaUrl = media?.source_url;\n\n\t// instead of destructuring the attributes\n\t// we define the url and background type\n\t// depending on the value of the useFeaturedImage flag\n\t// to preview in edit the dynamic featured image\n\tconst url = useFeaturedImage ? mediaUrl : attributes.url;\n\tconst backgroundType = useFeaturedImage\n\t\t? IMAGE_BACKGROUND_TYPE\n\t\t: attributes.backgroundType;\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst { gradientClass, gradientValue } = __experimentalUseGradient();\n\tconst onSelectMedia = attributesFromMedia( setAttributes, dimRatio );\n\tconst isUploadingMedia = isTemporaryMedia( id, url );\n\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst mediaElement = useRef();\n\tconst isCoverDark = useCoverIsDark(\n\t\turl,\n\t\tdimRatio,\n\t\toverlayColor.color,\n\t\tmediaElement\n\t);\n\n\tuseEffect( () => {\n\t\t// This side-effect should not create an undo level.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetAttributes( { isDark: isCoverDark } );\n\t}, [ isCoverDark ] );\n\n\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\tconst minHeightWithUnit =\n\t\tminHeight && minHeightUnit\n\t\t\t? `${ minHeight }${ minHeightUnit }`\n\t\t\t: minHeight;\n\n\tconst isImgElement = ! ( hasParallax || isRepeated );\n\n\tconst style = {\n\t\tminHeight: minHeightWithUnit || undefined,\n\t};\n\n\tconst backgroundImage = url ? `url(${ url })` : undefined;\n\n\tconst backgroundPosition = mediaPosition( focalPoint );\n\n\tconst bgStyle = { backgroundColor: overlayColor.color };\n\tconst mediaStyle = {\n\t\tobjectPosition:\n\t\t\tfocalPoint && isImgElement\n\t\t\t\t? mediaPosition( focalPoint )\n\t\t\t\t: undefined,\n\t};\n\n\tconst hasBackground = !! ( url || overlayColor.color || gradientValue );\n\n\tconst hasInnerBlocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlock( clientId ).innerBlocks.length >\n\t\t\t0,\n\t\t[ clientId ]\n\t);\n\n\tconst ref = useRef();\n\tconst blockProps = useBlockProps( { ref } );\n\n\t// Check for fontSize support before we pass a fontSize attribute to the innerBlocks.\n\tconst hasFontSizes = !! useSetting( 'typography.fontSizes' )?.length;\n\tconst innerBlocksTemplate = getInnerBlocksTemplate( {\n\t\tfontSize: hasFontSizes ? 'large' : undefined,\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-cover__inner-container',\n\t\t},\n\t\t{\n\t\t\ttemplate: innerBlocksTemplate,\n\t\t\ttemplateInsertUpdatesSelection: true,\n\t\t\tallowedBlocks,\n\t\t\ttemplateLock,\n\t\t}\n\t);\n\n\tconst currentSettings = {\n\t\tisVideoBackground,\n\t\tisImageBackground,\n\t\tmediaElement,\n\t\thasInnerBlocks,\n\t\turl,\n\t\tisImgElement,\n\t\toverlayColor,\n\t};\n\n\tconst toggleUseFeaturedImage = () => {\n\t\tsetAttributes( {\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t\tuseFeaturedImage: ! useFeaturedImage,\n\t\t\tdimRatio: dimRatio === 100 ? 50 : dimRatio,\n\t\t\tbackgroundType: useFeaturedImage\n\t\t\t\t? IMAGE_BACKGROUND_TYPE\n\t\t\t\t: undefined,\n\t\t} );\n\t};\n\n\tconst blockControls = (\n\t\t<CoverBlockControls\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\tcurrentSettings={ currentSettings }\n\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t/>\n\t);\n\n\tconst inspectorControls = (\n\t\t<CoverInspectorControls\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tclientId={ clientId }\n\t\t\tsetOverlayColor={ setOverlayColor }\n\t\t\tcoverRef={ ref }\n\t\t\tcurrentSettings={ currentSettings }\n\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t/>\n\t);\n\n\tif ( ! useFeaturedImage && ! hasInnerBlocks && ! hasBackground ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ blockControls }\n\t\t\t\t{ inspectorControls }\n\t\t\t\t<div\n\t\t\t\t\t{ ...blockProps }\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'is-placeholder',\n\t\t\t\t\t\tblockProps.className\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t<CoverPlaceholder\n\t\t\t\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tminHeight: minHeightWithUnit || undefined,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"wp-block-cover__placeholder-background-options\">\n\t\t\t\t\t\t\t<ColorPalette\n\t\t\t\t\t\t\t\tdisableCustomColors={ true }\n\t\t\t\t\t\t\t\tvalue={ overlayColor.color }\n\t\t\t\t\t\t\t\tonChange={ setOverlayColor }\n\t\t\t\t\t\t\t\tclearable={ false }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</CoverPlaceholder>\n\t\t\t\t\t<ResizableCover\n\t\t\t\t\t\tclassName=\"block-library-cover__resize-container\"\n\t\t\t\t\t\tonResizeStart={ () => {\n\t\t\t\t\t\t\tsetAttributes( { minHeightUnit: 'px' } );\n\t\t\t\t\t\t\ttoggleSelection( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonResize={ ( value ) => {\n\t\t\t\t\t\t\tsetAttributes( { minHeight: value } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonResizeStop={ ( newMinHeight ) => {\n\t\t\t\t\t\t\ttoggleSelection( true );\n\t\t\t\t\t\t\tsetAttributes( { minHeight: newMinHeight } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tshowHandle={ isSelected }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst classes = classnames(\n\t\t{\n\t\t\t'is-dark-theme': isDark,\n\t\t\t'is-light': ! isDark,\n\t\t\t'is-transient': isUploadingMedia,\n\t\t\t'has-parallax': hasParallax,\n\t\t\t'is-repeated': isRepeated,\n\t\t\t'has-custom-content-position':\n\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t},\n\t\tgetPositionClassName( contentPosition )\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ blockControls }\n\t\t\t{ inspectorControls }\n\t\t\t<div\n\t\t\t\t{ ...blockProps }\n\t\t\t\tclassName={ classnames( classes, blockProps.className ) }\n\t\t\t\tstyle={ { ...style, ...blockProps.style } }\n\t\t\t\tdata-url={ url }\n\t\t\t>\n\t\t\t\t<ResizableCover\n\t\t\t\t\tclassName=\"block-library-cover__resize-container\"\n\t\t\t\t\tonResizeStart={ () => {\n\t\t\t\t\t\tsetAttributes( { minHeightUnit: 'px' } );\n\t\t\t\t\t\ttoggleSelection( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonResize={ ( value ) => {\n\t\t\t\t\t\tsetAttributes( { minHeight: value } );\n\t\t\t\t\t} }\n\t\t\t\t\tonResizeStop={ ( newMinHeight ) => {\n\t\t\t\t\t\ttoggleSelection( true );\n\t\t\t\t\t\tsetAttributes( { minHeight: newMinHeight } );\n\t\t\t\t\t} }\n\t\t\t\t\tshowHandle={ isSelected }\n\t\t\t\t/>\n\n\t\t\t\t{ ( ! useFeaturedImage || url ) && (\n\t\t\t\t\t<span\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-cover__background',\n\t\t\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t[ overlayColor.class ]: overlayColor.class,\n\t\t\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t\t\t// For backwards compatibility. Former versions of the Cover Block applied\n\t\t\t\t\t\t\t\t// `.wp-block-cover__gradient-background` in the presence of\n\t\t\t\t\t\t\t\t// media, a gradient and a dim.\n\t\t\t\t\t\t\t\t'wp-block-cover__gradient-background':\n\t\t\t\t\t\t\t\t\turl && gradientValue && dimRatio !== 0,\n\t\t\t\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tstyle={ { backgroundImage: gradientValue, ...bgStyle } }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\n\t\t\t\t{ ! url && useFeaturedImage && (\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\tclassName=\"wp-block-cover__image--placeholder-image\"\n\t\t\t\t\t\twithIllustration={ true }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\n\t\t\t\t{ url &&\n\t\t\t\t\tisImageBackground &&\n\t\t\t\t\t( isImgElement ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\t\tclassName=\"wp-block-cover__image-background\"\n\t\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\t\tstyle={ mediaStyle }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\t\trole=\"img\"\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\tclasses,\n\t\t\t\t\t\t\t\t'wp-block-cover__image-background'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tstyle={ { backgroundImage, backgroundPosition } }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t{ url && isVideoBackground && (\n\t\t\t\t\t<video\n\t\t\t\t\t\tref={ mediaElement }\n\t\t\t\t\t\tclassName=\"wp-block-cover__video-background\"\n\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ mediaStyle }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isUploadingMedia && <Spinner /> }\n\t\t\t\t<CoverPlaceholder\n\t\t\t\t\tdisableMediaButtons\n\t\t\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\ttoggleUseFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t/>\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default compose( [\n\twithColors( { overlayColor: 'background-color' } ),\n] )( CoverEdit );\n","export default function(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u<t&&(t=u,b=g)}return b}};f.string.push([function(f){var r=f.toLowerCase(),d=\"transparent\"===r?\"#0000\":a[r];return d?new e(d).toRgb():null},\"name\"])}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { IMAGE_BACKGROUND_TYPE, VIDEO_BACKGROUND_TYPE } from './shared';\nimport cleanEmptyObject from '../utils/clean-empty-object';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/image' ],\n\t\t\ttransform: ( { caption, url, alt, align, id, anchor, style } ) =>\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/cover',\n\t\t\t\t\t{\n\t\t\t\t\t\tdimRatio: 50,\n\t\t\t\t\t\turl,\n\t\t\t\t\t\talt,\n\t\t\t\t\t\talign,\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tanchor,\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\tduotone: style?.color?.duotone,\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\t[\n\t\t\t\t\t\tcreateBlock( 'core/paragraph', {\n\t\t\t\t\t\t\tcontent: caption,\n\t\t\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t} ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/video' ],\n\t\t\ttransform: ( { caption, src, align, id, anchor } ) =>\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/cover',\n\t\t\t\t\t{\n\t\t\t\t\t\tdimRatio: 50,\n\t\t\t\t\t\turl: src,\n\t\t\t\t\t\talign,\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tbackgroundType: VIDEO_BACKGROUND_TYPE,\n\t\t\t\t\t\tanchor,\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock( 'core/paragraph', {\n\t\t\t\t\t\t\tcontent: caption,\n\t\t\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t} ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/group' ],\n\t\t\ttransform: ( attributes, innerBlocks ) => {\n\t\t\t\tconst { align, anchor, backgroundColor, gradient, style } =\n\t\t\t\t\tattributes;\n\n\t\t\t\t// If the Group block being transformed has a Cover block as its\n\t\t\t\t// only child return that Cover block.\n\t\t\t\tif (\n\t\t\t\t\tinnerBlocks?.length === 1 &&\n\t\t\t\t\tinnerBlocks[ 0 ]?.name === 'core/cover'\n\t\t\t\t) {\n\t\t\t\t\treturn createBlock(\n\t\t\t\t\t\t'core/cover',\n\t\t\t\t\t\tinnerBlocks[ 0 ].attributes,\n\t\t\t\t\t\tinnerBlocks[ 0 ].innerBlocks\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// If no background or gradient color is provided, default to 50% opacity.\n\t\t\t\t// This matches the styling of a Cover block with a background image,\n\t\t\t\t// in the state where a background image has been removed.\n\t\t\t\tconst dimRatio =\n\t\t\t\t\tbackgroundColor ||\n\t\t\t\t\tgradient ||\n\t\t\t\t\tstyle?.color?.background ||\n\t\t\t\t\tstyle?.color?.gradient\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: 50;\n\n\t\t\t\t// Move the background or gradient color to the parent Cover block.\n\t\t\t\tconst parentAttributes = {\n\t\t\t\t\talign,\n\t\t\t\t\tanchor,\n\t\t\t\t\tdimRatio,\n\t\t\t\t\toverlayColor: backgroundColor,\n\t\t\t\t\tcustomOverlayColor: style?.color?.background,\n\t\t\t\t\tgradient,\n\t\t\t\t\tcustomGradient: style?.color?.gradient,\n\t\t\t\t};\n\n\t\t\t\tconst attributesWithoutBackgroundColors = {\n\t\t\t\t\t...attributes,\n\t\t\t\t\tbackgroundColor: undefined,\n\t\t\t\t\tgradient: undefined,\n\t\t\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t\t\t...attributes?.style,\n\t\t\t\t\t\tcolor: style?.color\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...style?.color,\n\t\t\t\t\t\t\t\t\tbackground: undefined,\n\t\t\t\t\t\t\t\t\tgradient: undefined,\n\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t} ),\n\t\t\t\t};\n\n\t\t\t\t// Preserve the block by nesting it within the Cover block,\n\t\t\t\t// instead of converting the Group block directly to the Cover block.\n\t\t\t\treturn createBlock( 'core/cover', parentAttributes, [\n\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t'core/group',\n\t\t\t\t\t\tattributesWithoutBackgroundColors,\n\t\t\t\t\t\tinnerBlocks\n\t\t\t\t\t),\n\t\t\t\t] );\n\t\t\t},\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/image' ],\n\t\t\tisMatch: ( {\n\t\t\t\tbackgroundType,\n\t\t\t\turl,\n\t\t\t\toverlayColor,\n\t\t\t\tcustomOverlayColor,\n\t\t\t\tgradient,\n\t\t\t\tcustomGradient,\n\t\t\t} ) => {\n\t\t\t\tif ( url ) {\n\t\t\t\t\t// If a url exists the transform could happen if that URL represents an image background.\n\t\t\t\t\treturn backgroundType === IMAGE_BACKGROUND_TYPE;\n\t\t\t\t}\n\t\t\t\t// If a url is not set the transform could happen if the cover has no background color or gradient;\n\t\t\t\treturn (\n\t\t\t\t\t! overlayColor &&\n\t\t\t\t\t! customOverlayColor &&\n\t\t\t\t\t! gradient &&\n\t\t\t\t\t! customGradient\n\t\t\t\t);\n\t\t\t},\n\t\t\ttransform: ( { title, url, alt, align, id, anchor, style } ) =>\n\t\t\t\tcreateBlock( 'core/image', {\n\t\t\t\t\tcaption: title,\n\t\t\t\t\turl,\n\t\t\t\t\talt,\n\t\t\t\t\talign,\n\t\t\t\t\tid,\n\t\t\t\t\tanchor,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\tduotone: style?.color?.duotone,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/video' ],\n\t\t\tisMatch: ( {\n\t\t\t\tbackgroundType,\n\t\t\t\turl,\n\t\t\t\toverlayColor,\n\t\t\t\tcustomOverlayColor,\n\t\t\t\tgradient,\n\t\t\t\tcustomGradient,\n\t\t\t} ) => {\n\t\t\t\tif ( url ) {\n\t\t\t\t\t// If a url exists the transform could happen if that URL represents a video background.\n\t\t\t\t\treturn backgroundType === VIDEO_BACKGROUND_TYPE;\n\t\t\t\t}\n\t\t\t\t// If a url is not set the transform could happen if the cover has no background color or gradient;\n\t\t\t\treturn (\n\t\t\t\t\t! overlayColor &&\n\t\t\t\t\t! customOverlayColor &&\n\t\t\t\t\t! gradient &&\n\t\t\t\t\t! customGradient\n\t\t\t\t);\n\t\t\t},\n\t\t\ttransform: ( { title, url, align, id, anchor } ) =>\n\t\t\t\tcreateBlock( 'core/video', {\n\t\t\t\t\tcaption: title,\n\t\t\t\t\tsrc: url,\n\t\t\t\t\tid,\n\t\t\t\t\talign,\n\t\t\t\t\tanchor,\n\t\t\t\t} ),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/group' ],\n\t\t\tisMatch: ( { url, useFeaturedImage } ) => {\n\t\t\t\t// If the Cover block uses background media, skip this transform,\n\t\t\t\t// and instead use the Group block's default transform.\n\t\t\t\tif ( url || useFeaturedImage ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\ttransform: ( attributes, innerBlocks ) => {\n\t\t\t\t// Convert Cover overlay colors to comparable Group background colors.\n\t\t\t\tconst transformedColorAttributes = {\n\t\t\t\t\tbackgroundColor: attributes?.overlayColor,\n\t\t\t\t\tgradient: attributes?.gradient,\n\t\t\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t\t\t...attributes?.style,\n\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\tattributes?.customOverlayColor ||\n\t\t\t\t\t\t\tattributes?.customGradient ||\n\t\t\t\t\t\t\tattributes?.style?.color\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\t\t\t\tattributes?.customOverlayColor,\n\t\t\t\t\t\t\t\t\t\tgradient: attributes?.customGradient,\n\t\t\t\t\t\t\t\t\t\t...attributes?.style?.color,\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t} ),\n\t\t\t\t};\n\n\t\t\t\t// If the Cover block contains only a single Group block as a direct child,\n\t\t\t\t// then attempt to merge the Cover's background colors with the child Group block,\n\t\t\t\t// and remove the Cover block as the wrapper.\n\t\t\t\tif (\n\t\t\t\t\tinnerBlocks?.length === 1 &&\n\t\t\t\t\tinnerBlocks[ 0 ]?.name === 'core/group'\n\t\t\t\t) {\n\t\t\t\t\tconst groupAttributes = cleanEmptyObject(\n\t\t\t\t\t\tinnerBlocks[ 0 ].attributes || {}\n\t\t\t\t\t);\n\n\t\t\t\t\t// If the Group block contains any kind of background color or gradient,\n\t\t\t\t\t// skip merging Cover background colors, and preserve the Group block's colors.\n\t\t\t\t\tif (\n\t\t\t\t\t\tgroupAttributes?.backgroundColor ||\n\t\t\t\t\t\tgroupAttributes?.gradient ||\n\t\t\t\t\t\tgroupAttributes?.style?.color?.background ||\n\t\t\t\t\t\tgroupAttributes?.style?.color?.gradient\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn createBlock(\n\t\t\t\t\t\t\t'core/group',\n\t\t\t\t\t\t\tgroupAttributes,\n\t\t\t\t\t\t\tinnerBlocks[ 0 ]?.innerBlocks\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn createBlock(\n\t\t\t\t\t\t'core/group',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...transformedColorAttributes,\n\t\t\t\t\t\t\t...groupAttributes,\n\t\t\t\t\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t\t\t\t\t...groupAttributes?.style,\n\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\ttransformedColorAttributes?.style?.color ||\n\t\t\t\t\t\t\t\t\tgroupAttributes?.style?.color\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t...transformedColorAttributes\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.style?.color,\n\t\t\t\t\t\t\t\t\t\t\t\t...groupAttributes?.style\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.color,\n\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinnerBlocks[ 0 ]?.innerBlocks\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// In all other cases, transform the Cover block directly to a Group block.\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{ ...attributes, ...transformedColorAttributes },\n\t\t\t\t\tinnerBlocks\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { cover as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tcustomOverlayColor: '#065174',\n\t\t\tdimRatio: 40,\n\t\t\turl: 'https://s.w.org/images/core/5.3/Windbuchencom.jpg',\n\t\t},\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcontent: __( '<strong>Snow Patrol</strong>' ),\n\t\t\t\t\talign: 'center',\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\ttypography: {\n\t\t\t\t\t\t\tfontSize: 48,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\ttext: 'white',\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},\n\ttransforms,\n\tsave,\n\tedit,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseInnerBlocksProps,\n\tgetColorClassName,\n\t__experimentalGetGradientClass,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tIMAGE_BACKGROUND_TYPE,\n\tVIDEO_BACKGROUND_TYPE,\n\tdimRatioToClass,\n\tisContentPositionCenter,\n\tgetPositionClassName,\n\tmediaPosition,\n} from './shared';\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\tbackgroundType,\n\t\tgradient,\n\t\tcontentPosition,\n\t\tcustomGradient,\n\t\tcustomOverlayColor,\n\t\tdimRatio,\n\t\tfocalPoint,\n\t\tuseFeaturedImage,\n\t\thasParallax,\n\t\tisDark,\n\t\tisRepeated,\n\t\toverlayColor,\n\t\turl,\n\t\talt,\n\t\tid,\n\t\tminHeight: minHeightProp,\n\t\tminHeightUnit,\n\t} = attributes;\n\tconst overlayColorClass = getColorClassName(\n\t\t'background-color',\n\t\toverlayColor\n\t);\n\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\tconst minHeight =\n\t\tminHeightProp && minHeightUnit\n\t\t\t? `${ minHeightProp }${ minHeightUnit }`\n\t\t\t: minHeightProp;\n\n\tconst isImageBackground = IMAGE_BACKGROUND_TYPE === backgroundType;\n\tconst isVideoBackground = VIDEO_BACKGROUND_TYPE === backgroundType;\n\n\tconst isImgElement = ! ( hasParallax || isRepeated );\n\n\tconst style = {\n\t\tminHeight: minHeight || undefined,\n\t};\n\n\tconst bgStyle = {\n\t\tbackgroundColor: ! overlayColorClass ? customOverlayColor : undefined,\n\t\tbackground: customGradient ? customGradient : undefined,\n\t};\n\n\tconst objectPosition =\n\t\t// prettier-ignore\n\t\tfocalPoint && isImgElement\n\t\t\t  ? mediaPosition(focalPoint)\n\t\t\t  : undefined;\n\n\tconst backgroundImage = url ? `url(${ url })` : undefined;\n\n\tconst backgroundPosition = mediaPosition( focalPoint );\n\n\tconst classes = classnames(\n\t\t{\n\t\t\t'is-light': ! isDark,\n\t\t\t'has-parallax': hasParallax,\n\t\t\t'is-repeated': isRepeated,\n\t\t\t'has-custom-content-position':\n\t\t\t\t! isContentPositionCenter( contentPosition ),\n\t\t},\n\t\tgetPositionClassName( contentPosition )\n\t);\n\n\tconst imgClasses = classnames(\n\t\t'wp-block-cover__image-background',\n\t\tid ? `wp-image-${ id }` : null,\n\t\t{\n\t\t\t'has-parallax': hasParallax,\n\t\t\t'is-repeated': isRepeated,\n\t\t}\n\t);\n\n\tconst gradientValue = gradient || customGradient;\n\n\treturn (\n\t\t<div { ...useBlockProps.save( { className: classes, style } ) }>\n\t\t\t<span\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'wp-block-cover__background',\n\t\t\t\t\toverlayColorClass,\n\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t{\n\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t// For backwards compatibility. Former versions of the Cover Block applied\n\t\t\t\t\t\t// `.wp-block-cover__gradient-background` in the presence of\n\t\t\t\t\t\t// media, a gradient and a dim.\n\t\t\t\t\t\t'wp-block-cover__gradient-background':\n\t\t\t\t\t\t\turl && gradientValue && dimRatio !== 0,\n\t\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t\tstyle={ bgStyle }\n\t\t\t/>\n\n\t\t\t{ ! useFeaturedImage &&\n\t\t\t\tisImageBackground &&\n\t\t\t\turl &&\n\t\t\t\t( isImgElement ? (\n\t\t\t\t\t<img\n\t\t\t\t\t\tclassName={ imgClasses }\n\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\tsrc={ url }\n\t\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<div\n\t\t\t\t\t\trole=\"img\"\n\t\t\t\t\t\tclassName={ imgClasses }\n\t\t\t\t\t\tstyle={ { backgroundPosition, backgroundImage } }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t{ isVideoBackground && url && (\n\t\t\t\t<video\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'wp-block-cover__video-background',\n\t\t\t\t\t\t'intrinsic-ignore'\n\t\t\t\t\t) }\n\t\t\t\t\tautoPlay\n\t\t\t\t\tmuted\n\t\t\t\t\tloop\n\t\t\t\t\tplaysInline\n\t\t\t\t\tsrc={ url }\n\t\t\t\t\tstyle={ { objectPosition } }\n\t\t\t\t\tdata-object-fit=\"cover\"\n\t\t\t\t\tdata-object-position={ objectPosition }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\tclassName: 'wp-block-cover__inner-container',\n\t\t\t\t} ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","/**\n * Internal dependencies\n */\n\nimport { default as pencil } from './pencil';\nexport default pencil;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst pencil = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M20.1 5.1L16.9 2 6.2 12.7l-1.3 4.4 4.5-1.3L20.1 5.1zM4 20.8h8v-1.5H4v1.5z\" />\n\t</SVG>\n);\n\nexport default pencil;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tToolbarButton,\n\tPanelBody,\n\tToggleControl,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { BlockControls, InspectorControls } from '@wordpress/block-editor';\nimport { edit } from '@wordpress/icons';\n\nfunction getResponsiveHelp( checked ) {\n\treturn checked\n\t\t? __(\n\t\t\t\t'This embed will preserve its aspect ratio when the browser is resized.'\n\t\t  )\n\t\t: __(\n\t\t\t\t'This embed may not preserve its aspect ratio when the browser is resized.'\n\t\t  );\n}\n\nconst EmbedControls = ( {\n\tblockSupportsResponsive,\n\tshowEditButton,\n\tthemeSupportsResponsive,\n\tallowResponsive,\n\ttoggleResponsive,\n\tswitchBackToURLInput,\n} ) => (\n\t<>\n\t\t<BlockControls>\n\t\t\t<ToolbarGroup>\n\t\t\t\t{ showEditButton && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\t\t\tlabel={ __( 'Edit URL' ) }\n\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\tonClick={ switchBackToURLInput }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t\t{ themeSupportsResponsive && blockSupportsResponsive && (\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody\n\t\t\t\t\ttitle={ __( 'Media settings' ) }\n\t\t\t\t\tclassName=\"blocks-responsive\"\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Resize for smaller devices' ) }\n\t\t\t\t\t\tchecked={ allowResponsive }\n\t\t\t\t\t\thelp={ getResponsiveHelp }\n\t\t\t\t\t\tonChange={ toggleResponsive }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t) }\n\t</>\n);\n\nexport default EmbedControls;\n","/**\n * WordPress dependencies\n */\nimport { G, Path, SVG } from '@wordpress/components';\n\nexport const embedContentIcon = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V9.8l4.7-5.3H19c.3 0 .5.2.5.5v14zm-6-9.5L16 12l-2.5 2.8 1.1 1L18 12l-3.5-3.5-1 1zm-3 0l-1-1L6 12l3.5 3.8 1.1-1L8 12l2.5-2.5z\" />\n\t</SVG>\n);\nexport const embedAudioIcon = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V9.8l4.7-5.3H19c.3 0 .5.2.5.5v14zM13.2 7.7c-.4.4-.7 1.1-.7 1.9v3.7c-.4-.3-.8-.4-1.3-.4-1.2 0-2.2 1-2.2 2.2 0 1.2 1 2.2 2.2 2.2.5 0 1-.2 1.4-.5.9-.6 1.4-1.6 1.4-2.6V9.6c0-.4.1-.6.2-.8.3-.3 1-.3 1.6-.3h.2V7h-.2c-.7 0-1.8 0-2.6.7z\" />\n\t</SVG>\n);\nexport const embedPhotoIcon = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9.2 4.5H19c.3 0 .5.2.5.5v8.4l-3-2.9c-.3-.3-.8-.3-1 0L11.9 14 9 12c-.3-.2-.6-.2-.8 0l-3.6 2.6V9.8l4.6-5.3zm9.8 15H5c-.3 0-.5-.2-.5-.5v-2.4l4.1-3 3 1.9c.3.2.7.2.9-.1L16 12l3.5 3.4V19c0 .3-.2.5-.5.5z\" />\n\t</SVG>\n);\nexport const embedVideoIcon = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V9.8l4.7-5.3H19c.3 0 .5.2.5.5v14zM10 15l5-3-5-3v6z\" />\n\t</SVG>\n);\nexport const embedTwitterIcon = {\n\tforeground: '#1da1f2',\n\tsrc: (\n\t\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t\t<G>\n\t\t\t\t<Path d=\"M22.23 5.924c-.736.326-1.527.547-2.357.646.847-.508 1.498-1.312 1.804-2.27-.793.47-1.67.812-2.606.996C18.325 4.498 17.258 4 16.078 4c-2.266 0-4.103 1.837-4.103 4.103 0 .322.036.635.106.935-3.41-.17-6.433-1.804-8.457-4.287-.353.607-.556 1.312-.556 2.064 0 1.424.724 2.68 1.825 3.415-.673-.022-1.305-.207-1.86-.514v.052c0 1.988 1.415 3.647 3.293 4.023-.344.095-.707.145-1.08.145-.265 0-.522-.026-.773-.074.522 1.63 2.038 2.817 3.833 2.85-1.404 1.1-3.174 1.757-5.096 1.757-.332 0-.66-.02-.98-.057 1.816 1.164 3.973 1.843 6.29 1.843 7.547 0 11.675-6.252 11.675-11.675 0-.178-.004-.355-.012-.53.802-.578 1.497-1.3 2.047-2.124z\"></Path>\n\t\t\t</G>\n\t\t</SVG>\n\t),\n};\nexport const embedYouTubeIcon = {\n\tforeground: '#ff0000',\n\tsrc: (\n\t\t<SVG viewBox=\"0 0 24 24\">\n\t\t\t<Path d=\"M21.8 8s-.195-1.377-.795-1.984c-.76-.797-1.613-.8-2.004-.847-2.798-.203-6.996-.203-6.996-.203h-.01s-4.197 0-6.996.202c-.39.046-1.242.05-2.003.846C2.395 6.623 2.2 8 2.2 8S2 9.62 2 11.24v1.517c0 1.618.2 3.237.2 3.237s.195 1.378.795 1.985c.76.797 1.76.77 2.205.855 1.6.153 6.8.2 6.8.2s4.203-.005 7-.208c.392-.047 1.244-.05 2.005-.847.6-.607.795-1.985.795-1.985s.2-1.618.2-3.237v-1.517C22 9.62 21.8 8 21.8 8zM9.935 14.595v-5.62l5.403 2.82-5.403 2.8z\" />\n\t\t</SVG>\n\t),\n};\nexport const embedFacebookIcon = {\n\tforeground: '#3b5998',\n\tsrc: (\n\t\t<SVG viewBox=\"0 0 24 24\">\n\t\t\t<Path d=\"M20 3H4c-.6 0-1 .4-1 1v16c0 .5.4 1 1 1h8.6v-7h-2.3v-2.7h2.3v-2c0-2.3 1.4-3.6 3.5-3.6 1 0 1.8.1 2.1.1v2.4h-1.4c-1.1 0-1.3.5-1.3 1.3v1.7h2.7l-.4 2.8h-2.3v7H20c.5 0 1-.4 1-1V4c0-.6-.4-1-1-1z\" />\n\t\t</SVG>\n\t),\n};\nexport const embedInstagramIcon = (\n\t<SVG viewBox=\"0 0 24 24\">\n\t\t<G>\n\t\t\t<Path d=\"M12 4.622c2.403 0 2.688.01 3.637.052.877.04 1.354.187 1.67.31.42.163.72.358 1.036.673.315.315.51.615.673 1.035.123.317.27.794.31 1.67.043.95.052 1.235.052 3.638s-.01 2.688-.052 3.637c-.04.877-.187 1.354-.31 1.67-.163.42-.358.72-.673 1.036-.315.315-.615.51-1.035.673-.317.123-.794.27-1.67.31-.95.043-1.234.052-3.638.052s-2.688-.01-3.637-.052c-.877-.04-1.354-.187-1.67-.31-.42-.163-.72-.358-1.036-.673-.315-.315-.51-.615-.673-1.035-.123-.317-.27-.794-.31-1.67-.043-.95-.052-1.235-.052-3.638s.01-2.688.052-3.637c.04-.877.187-1.354.31-1.67.163-.42.358-.72.673-1.036.315-.315.615-.51 1.035-.673.317-.123.794-.27 1.67-.31.95-.043 1.235-.052 3.638-.052M12 3c-2.444 0-2.75.01-3.71.054s-1.613.196-2.185.418c-.592.23-1.094.538-1.594 1.04-.5.5-.807 1-1.037 1.593-.223.572-.375 1.226-.42 2.184C3.01 9.25 3 9.555 3 12s.01 2.75.054 3.71.196 1.613.418 2.186c.23.592.538 1.094 1.038 1.594s1.002.808 1.594 1.038c.572.222 1.227.375 2.185.418.96.044 1.266.054 3.71.054s2.75-.01 3.71-.054 1.613-.196 2.186-.418c.592-.23 1.094-.538 1.594-1.038s.808-1.002 1.038-1.594c.222-.572.375-1.227.418-2.185.044-.96.054-1.266.054-3.71s-.01-2.75-.054-3.71-.196-1.613-.418-2.186c-.23-.592-.538-1.094-1.038-1.594s-1.002-.808-1.594-1.038c-.572-.222-1.227-.375-2.185-.418C14.75 3.01 14.445 3 12 3zm0 4.378c-2.552 0-4.622 2.07-4.622 4.622s2.07 4.622 4.622 4.622 4.622-2.07 4.622-4.622S14.552 7.378 12 7.378zM12 15c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3zm4.804-8.884c-.596 0-1.08.484-1.08 1.08s.484 1.08 1.08 1.08c.596 0 1.08-.484 1.08-1.08s-.483-1.08-1.08-1.08z\"></Path>\n\t\t</G>\n\t</SVG>\n);\nexport const embedWordPressIcon = {\n\tforeground: '#0073AA',\n\tsrc: (\n\t\t<SVG viewBox=\"0 0 24 24\">\n\t\t\t<G>\n\t\t\t\t<Path d=\"M12.158 12.786l-2.698 7.84c.806.236 1.657.365 2.54.365 1.047 0 2.05-.18 2.986-.51-.024-.037-.046-.078-.065-.123l-2.762-7.57zM3.008 12c0 3.56 2.07 6.634 5.068 8.092L3.788 8.342c-.5 1.117-.78 2.354-.78 3.658zm15.06-.454c0-1.112-.398-1.88-.74-2.48-.456-.74-.883-1.368-.883-2.11 0-.825.627-1.595 1.51-1.595.04 0 .078.006.116.008-1.598-1.464-3.73-2.36-6.07-2.36-3.14 0-5.904 1.613-7.512 4.053.21.008.41.012.58.012.94 0 2.395-.114 2.395-.114.484-.028.54.684.057.74 0 0-.487.058-1.03.086l3.275 9.74 1.968-5.902-1.4-3.838c-.485-.028-.944-.085-.944-.085-.486-.03-.43-.77.056-.742 0 0 1.484.114 2.368.114.94 0 2.397-.114 2.397-.114.486-.028.543.684.058.74 0 0-.488.058-1.03.086l3.25 9.665.897-2.997c.456-1.17.684-2.137.684-2.907zm1.82-3.86c.04.286.06.593.06.924 0 .912-.17 1.938-.683 3.22l-2.746 7.94c2.672-1.558 4.47-4.454 4.47-7.77 0-1.564-.4-3.033-1.1-4.314zM12 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10z\"></Path>\n\t\t\t</G>\n\t\t</SVG>\n\t),\n};\nexport const embedSpotifyIcon = {\n\tforeground: '#1db954',\n\tsrc: (\n\t\t<SVG viewBox=\"0 0 24 24\">\n\t\t\t<Path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m4.586 14.424c-.18.295-.563.387-.857.207-2.35-1.434-5.305-1.76-8.786-.963-.335.077-.67-.133-.746-.47-.077-.334.132-.67.47-.745 3.808-.87 7.076-.496 9.712 1.115.293.18.386.563.206.857M17.81 13.7c-.226.367-.706.482-1.072.257-2.687-1.652-6.785-2.13-9.965-1.166-.413.127-.848-.106-.973-.517-.125-.413.108-.848.52-.973 3.632-1.102 8.147-.568 11.234 1.328.366.226.48.707.256 1.072m.105-2.835C14.692 8.95 9.375 8.775 6.297 9.71c-.493.15-1.016-.13-1.166-.624-.148-.495.13-1.017.625-1.167 3.532-1.073 9.404-.866 13.115 1.337.445.264.59.838.327 1.282-.264.443-.838.59-1.282.325\" />\n\t\t</SVG>\n\t),\n};\nexport const embedFlickrIcon = (\n\t<SVG viewBox=\"0 0 24 24\">\n\t\t<Path d=\"m6.5 7c-2.75 0-5 2.25-5 5s2.25 5 5 5 5-2.25 5-5-2.25-5-5-5zm11 0c-2.75 0-5 2.25-5 5s2.25 5 5 5 5-2.25 5-5-2.25-5-5-5z\" />\n\t</SVG>\n);\nexport const embedVimeoIcon = {\n\tforeground: '#1ab7ea',\n\tsrc: (\n\t\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t\t<G>\n\t\t\t\t<Path d=\"M22.396 7.164c-.093 2.026-1.507 4.8-4.245 8.32C15.323 19.16 12.93 21 10.97 21c-1.214 0-2.24-1.12-3.08-3.36-.56-2.052-1.118-4.105-1.68-6.158-.622-2.24-1.29-3.36-2.004-3.36-.156 0-.7.328-1.634.98l-.978-1.26c1.027-.903 2.04-1.806 3.037-2.71C6 3.95 7.03 3.328 7.716 3.265c1.62-.156 2.616.95 2.99 3.32.404 2.558.685 4.148.84 4.77.468 2.12.982 3.18 1.543 3.18.435 0 1.09-.687 1.963-2.064.872-1.376 1.34-2.422 1.402-3.142.125-1.187-.343-1.782-1.4-1.782-.5 0-1.013.115-1.542.34 1.023-3.35 2.977-4.976 5.862-4.883 2.14.063 3.148 1.45 3.024 4.16z\"></Path>\n\t\t\t</G>\n\t\t</SVG>\n\t),\n};\nexport const embedRedditIcon = (\n\t<SVG viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M22 12.068a2.184 2.184 0 0 0-2.186-2.186c-.592 0-1.13.233-1.524.609-1.505-1.075-3.566-1.774-5.86-1.864l1.004-4.695 3.261.699A1.56 1.56 0 1 0 18.255 3c-.61-.001-1.147.357-1.398.877l-3.638-.77a.382.382 0 0 0-.287.053.348.348 0 0 0-.161.251l-1.112 5.233c-2.33.072-4.426.77-5.95 1.864a2.201 2.201 0 0 0-1.523-.61 2.184 2.184 0 0 0-.896 4.176c-.036.215-.053.43-.053.663 0 3.37 3.924 6.111 8.763 6.111s8.763-2.724 8.763-6.11c0-.216-.017-.449-.053-.664A2.207 2.207 0 0 0 22 12.068Zm-15.018 1.56a1.56 1.56 0 0 1 3.118 0c0 .86-.699 1.558-1.559 1.558-.86.018-1.559-.699-1.559-1.559Zm8.728 4.139c-1.076 1.075-3.119 1.147-3.71 1.147-.61 0-2.652-.09-3.71-1.147a.4.4 0 0 1 0-.573.4.4 0 0 1 .574 0c.68.68 2.114.914 3.136.914 1.022 0 2.473-.233 3.136-.914a.4.4 0 0 1 .574 0 .436.436 0 0 1 0 .573Zm-.287-2.563a1.56 1.56 0 0 1 0-3.118c.86 0 1.56.699 1.56 1.56 0 .841-.7 1.558-1.56 1.558Z\" />\n\t</SVG>\n);\nexport const embedTumblrIcon = {\n\tforeground: '#35465c',\n\tsrc: (\n\t\t<SVG viewBox=\"0 0 24 24\">\n\t\t\t<Path d=\"M19 3H5a2 2 0 00-2 2v14c0 1.1.9 2 2 2h14a2 2 0 002-2V5a2 2 0 00-2-2zm-5.69 14.66c-2.72 0-3.1-1.9-3.1-3.16v-3.56H8.49V8.99c1.7-.62 2.54-1.99 2.64-2.87 0-.06.06-.41.06-.58h1.9v3.1h2.17v2.3h-2.18v3.1c0 .47.13 1.3 1.2 1.26h1.1v2.36c-1.01.02-2.07 0-2.07 0z\" />\n\t\t</SVG>\n\t),\n};\nexport const embedAmazonIcon = (\n\t<SVG viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18.42 14.58c-.51-.66-1.05-1.23-1.05-2.5V7.87c0-1.8.15-3.45-1.2-4.68-1.05-1.02-2.79-1.35-4.14-1.35-2.6 0-5.52.96-6.12 4.14-.06.36.18.54.4.57l2.66.3c.24-.03.42-.27.48-.5.24-1.12 1.17-1.63 2.2-1.63.56 0 1.22.21 1.55.7.4.56.33 1.31.33 1.97v.36c-1.59.18-3.66.27-5.16.93a4.63 4.63 0 0 0-2.93 4.44c0 2.82 1.8 4.23 4.1 4.23 1.95 0 3.03-.45 4.53-1.98.51.72.66 1.08 1.59 1.83.18.09.45.09.63-.1v.04l2.1-1.8c.24-.21.2-.48.03-.75zm-5.4-1.2c-.45.75-1.14 1.23-1.92 1.23-1.05 0-1.65-.81-1.65-1.98 0-2.31 2.1-2.73 4.08-2.73v.6c0 1.05.03 1.92-.5 2.88z\" />\n\t\t<Path d=\"M21.69 19.2a17.62 17.62 0 0 1-21.6-1.57c-.23-.2 0-.5.28-.33a23.88 23.88 0 0 0 20.93 1.3c.45-.19.84.3.39.6z\" />\n\t\t<Path d=\"M22.8 17.96c-.36-.45-2.22-.2-3.1-.12-.23.03-.3-.18-.05-.36 1.5-1.05 3.96-.75 4.26-.39.3.36-.1 2.82-1.5 4.02-.21.18-.42.1-.3-.15.3-.8 1.02-2.58.69-3z\" />\n\t</SVG>\n);\nexport const embedAnimotoIcon = (\n\t<SVG viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\td=\"m.0206909 21 19.8160091-13.07806 3.5831 6.20826z\"\n\t\t\tfill=\"#4bc7ee\"\n\t\t/>\n\t\t<Path\n\t\t\td=\"m23.7254 19.0205-10.1074-17.18468c-.6421-1.114428-1.7087-1.114428-2.3249 0l-11.2931 19.16418h22.5655c1.279 0 1.8019-.8905 1.1599-1.9795z\"\n\t\t\tfill=\"#d4cdcb\"\n\t\t/>\n\t\t<Path\n\t\t\td=\"m.0206909 21 15.2439091-16.38571 4.3029 7.32271z\"\n\t\t\tfill=\"#c3d82e\"\n\t\t/>\n\t\t<Path\n\t\t\td=\"m13.618 1.83582c-.6421-1.114428-1.7087-1.114428-2.3249 0l-11.2931 19.16418 15.2646-16.38573z\"\n\t\t\tfill=\"#e4ecb0\"\n\t\t/>\n\t\t<Path d=\"m.0206909 21 19.5468091-9.063 1.6621 2.8344z\" fill=\"#209dbd\" />\n\t\t<Path\n\t\t\td=\"m.0206909 21 17.9209091-11.82623 1.6259 2.76323z\"\n\t\t\tfill=\"#7cb3c9\"\n\t\t/>\n\t</SVG>\n);\nexport const embedDailymotionIcon = (\n\t<SVG viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\td=\"m12.1479 18.5957c-2.4949 0-4.28131-1.7558-4.28131-4.0658 0-2.2176 1.78641-4.0965 4.09651-4.0965 2.2793 0 4.0349 1.7864 4.0349 4.1581 0 2.2794-1.7556 4.0042-3.8501 4.0042zm8.3521-18.5957-4.5329 1v7c-1.1088-1.41691-2.8028-1.8787-4.8049-1.8787-2.09443 0-3.97329.76993-5.5133 2.27917-1.72483 1.66323-2.6489 3.78863-2.6489 6.16033 0 2.5873.98562 4.8049 2.89526 6.499 1.44763 1.2936 3.17251 1.9402 5.17454 1.9402 1.9713 0 3.4498-.5236 4.8973-1.9402v1.9402h4.5329c0-7.6359 0-15.3641 0-23z\"\n\t\t\tfill=\"#333436\"\n\t\t/>\n\t</SVG>\n);\nexport const embedPinterestIcon = (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2\" />\n\t</SVG>\n);\n\nexport const embedWolframIcon = (\n\t<SVG viewBox=\"0 0 44 44\">\n\t\t<Path d=\"M32.59521,22.001l4.31885-4.84473-6.34131-1.38379.646-6.459-5.94336,2.61035L22,6.31934l-3.27344,5.60351L12.78418,9.3125l.645,6.458L7.08643,17.15234,11.40479,21.999,7.08594,26.84375l6.34131,1.38379-.64551,6.458,5.94287-2.60938L22,37.68066l3.27344-5.60351,5.94287,2.61035-.64551-6.458,6.34277-1.38183Zm.44385,2.75244L30.772,23.97827l-1.59558-2.07391,1.97888.735Zm-8.82147,6.1579L22.75,33.424V30.88977l1.52228-2.22168ZM18.56226,13.48816,19.819,15.09534l-2.49219-.88642L15.94037,12.337Zm6.87719.00116,2.62043-1.15027-1.38654,1.86981L24.183,15.0946Zm3.59357,2.6029-1.22546,1.7381.07525-2.73486,1.44507-1.94867ZM22,29.33008l-2.16406-3.15686L22,23.23688l2.16406,2.93634Zm-4.25458-9.582-.10528-3.836,3.60986,1.284v3.73242Zm5.00458-2.552,3.60986-1.284-.10528,3.836L22.75,20.92853Zm-7.78174-1.10559-.29352-2.94263,1.44245,1.94739.07519,2.73321Zm2.30982,5.08319,3.50817,1.18164-2.16247,2.9342-3.678-1.08447Zm2.4486,7.49285L21.25,30.88977v2.53485L19.78052,30.91Zm3.48707-6.31121,3.50817-1.18164,2.33228,3.03137-3.678,1.08447Zm10.87219-4.28113-2.714,3.04529L28.16418,19.928l1.92176-2.72565ZM24.06036,12.81769l-2.06012,2.6322-2.059-2.63318L22,9.292ZM9.91455,18.07227l4.00079-.87195,1.921,2.72735-3.20794,1.19019Zm2.93024,4.565,1.9801-.73462L13.228,23.97827l-2.26838.77429Zm-1.55591,3.58819L13.701,25.4021l2.64935.78058-2.14447.67853Zm3.64868,1.977L18.19,27.17334l.08313,3.46332L14.52979,32.2793Zm10.7876,2.43549.08447-3.464,3.25165,1.03052.407,4.07684Zm4.06824-3.77478-2.14545-.68,2.65063-.781,2.41266.825Z\" />\n\t</SVG>\n);\n\nexport const embedPocketCastsIcon = {\n\tforeground: '#f43e37',\n\tsrc: (\n\t\t<SVG\n\t\t\twidth=\"24\"\n\t\t\theight=\"24\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t>\n\t\t\t<Path\n\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\td=\"M24,12A12,12,0,1,1,12,0,12,12,0,0,1,24,12Z\"\n\t\t\t/>\n\t\t\t<Path\n\t\t\t\tfillRule=\"evenodd\"\n\t\t\t\tclipRule=\"evenodd\"\n\t\t\t\td=\"M2.67,12a9.33,9.33,0,0,1,18.66,0H19a7,7,0,1,0-7,7v2.33A9.33,9.33,0,0,1,2.67,12ZM12,17.6A5.6,5.6,0,1,1,17.6,12h-2A3.56,3.56,0,1,0,12,15.56Z\"\n\t\t\t\tfill=\"#fff\"\n\t\t\t/>\n\t\t</SVG>\n\t),\n};\n","/**\n * WordPress dependencies\n */\nimport { Spinner } from '@wordpress/components';\n\nconst EmbedLoading = () => (\n\t<div className=\"wp-block-embed is-loading\">\n\t\t<Spinner />\n\t</div>\n);\n\nexport default EmbedLoading;\n","/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { Button, Placeholder, ExternalLink } from '@wordpress/components';\nimport { BlockIcon } from '@wordpress/block-editor';\n\nconst EmbedPlaceholder = ( {\n\ticon,\n\tlabel,\n\tvalue,\n\tonSubmit,\n\tonChange,\n\tcannotEmbed,\n\tfallback,\n\ttryAgain,\n} ) => {\n\treturn (\n\t\t<Placeholder\n\t\t\ticon={ <BlockIcon icon={ icon } showColors /> }\n\t\t\tlabel={ label }\n\t\t\tclassName=\"wp-block-embed\"\n\t\t\tinstructions={ __(\n\t\t\t\t'Paste a link to the content you want to display on your site.'\n\t\t\t) }\n\t\t>\n\t\t\t<form onSubmit={ onSubmit }>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"url\"\n\t\t\t\t\tvalue={ value || '' }\n\t\t\t\t\tclassName=\"components-placeholder__input\"\n\t\t\t\t\taria-label={ label }\n\t\t\t\t\tplaceholder={ __( 'Enter URL to embed here…' ) }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t{ _x( 'Embed', 'button label' ) }\n\t\t\t\t</Button>\n\t\t\t</form>\n\t\t\t<div className=\"components-placeholder__learn-more\">\n\t\t\t\t<ExternalLink\n\t\t\t\t\thref={ __(\n\t\t\t\t\t\t'https://wordpress.org/support/article/embeds/'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Learn more about embeds' ) }\n\t\t\t\t</ExternalLink>\n\t\t\t</div>\n\t\t\t{ cannotEmbed && (\n\t\t\t\t<div className=\"components-placeholder__error\">\n\t\t\t\t\t<div className=\"components-placeholder__instructions\">\n\t\t\t\t\t\t{ __( 'Sorry, this content could not be embedded.' ) }\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button variant=\"secondary\" onClick={ tryAgain }>\n\t\t\t\t\t\t{ _x( 'Try again', 'button label' ) }\n\t\t\t\t\t</Button>{ ' ' }\n\t\t\t\t\t<Button variant=\"secondary\" onClick={ fallback }>\n\t\t\t\t\t\t{ _x( 'Convert to link', 'button label' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Placeholder>\n\t);\n};\n\nexport default EmbedPlaceholder;\n","/**\n * WordPress dependencies\n */\nimport { useMergeRefs, useFocusableIframe } from '@wordpress/compose';\nimport { useRef, useEffect, useMemo } from '@wordpress/element';\n\n/** @typedef {import('@wordpress/element').WPSyntheticEvent} WPSyntheticEvent */\n\nconst attributeMap = {\n\tclass: 'className',\n\tframeborder: 'frameBorder',\n\tmarginheight: 'marginHeight',\n\tmarginwidth: 'marginWidth',\n};\n\nexport default function WpEmbedPreview( { html } ) {\n\tconst ref = useRef();\n\tconst props = useMemo( () => {\n\t\tconst doc = new window.DOMParser().parseFromString( html, 'text/html' );\n\t\tconst iframe = doc.querySelector( 'iframe' );\n\t\tconst iframeProps = {};\n\n\t\tif ( ! iframe ) return iframeProps;\n\n\t\tArray.from( iframe.attributes ).forEach( ( { name, value } ) => {\n\t\t\tif ( name === 'style' ) return;\n\t\t\tiframeProps[ attributeMap[ name ] || name ] = value;\n\t\t} );\n\n\t\treturn iframeProps;\n\t}, [ html ] );\n\n\tuseEffect( () => {\n\t\tconst { ownerDocument } = ref.current;\n\t\tconst { defaultView } = ownerDocument;\n\n\t\t/**\n\t\t * Checks for WordPress embed events signaling the height change when\n\t\t * iframe content loads or iframe's window is resized.  The event is\n\t\t * sent from WordPress core via the window.postMessage API.\n\t\t *\n\t\t * References:\n\t\t * window.postMessage:\n\t\t * https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage\n\t\t * WordPress core embed-template on load:\n\t\t * https://github.com/WordPress/WordPress/blob/HEAD/wp-includes/js/wp-embed-template.js#L143\n\t\t * WordPress core embed-template on resize:\n\t\t * https://github.com/WordPress/WordPress/blob/HEAD/wp-includes/js/wp-embed-template.js#L187\n\t\t *\n\t\t * @param {MessageEvent} event Message event.\n\t\t */\n\t\tfunction resizeWPembeds( { data: { secret, message, value } = {} } ) {\n\t\t\tif ( message !== 'height' || secret !== props[ 'data-secret' ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tref.current.height = value;\n\t\t}\n\n\t\tdefaultView.addEventListener( 'message', resizeWPembeds );\n\t\treturn () => {\n\t\t\tdefaultView.removeEventListener( 'message', resizeWPembeds );\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<div className=\"wp-block-embed__wrapper\">\n\t\t\t<iframe\n\t\t\t\tref={ useMergeRefs( [ ref, useFocusableIframe() ] ) }\n\t\t\t\ttitle={ props.title }\n\t\t\t\t{ ...props }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","/**\n * Internal dependencies\n */\nimport { getPhotoHtml } from './util';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames/dedupe';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Placeholder, SandBox } from '@wordpress/components';\nimport {\n\tRichText,\n\tBlockIcon,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { Component } from '@wordpress/element';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport WpEmbedPreview from './wp-embed-preview';\n\nclass EmbedPreview extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.hideOverlay = this.hideOverlay.bind( this );\n\t\tthis.state = {\n\t\t\tinteractive: false,\n\t\t};\n\t}\n\n\tstatic getDerivedStateFromProps( nextProps, state ) {\n\t\tif ( ! nextProps.isSelected && state.interactive ) {\n\t\t\t// We only want to change this when the block is not selected, because changing it when\n\t\t\t// the block becomes selected makes the overlap disappear too early. Hiding the overlay\n\t\t\t// happens on mouseup when the overlay is clicked.\n\t\t\treturn { interactive: false };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\thideOverlay() {\n\t\t// This is called onMouseUp on the overlay. We can't respond to the `isSelected` prop\n\t\t// changing, because that happens on mouse down, and the overlay immediately disappears,\n\t\t// and the mouse event can end up in the preview content. We can't use onClick on\n\t\t// the overlay to hide it either, because then the editor misses the mouseup event, and\n\t\t// thinks we're multi-selecting blocks.\n\t\tthis.setState( { interactive: true } );\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tpreview,\n\t\t\tpreviewable,\n\t\t\turl,\n\t\t\ttype,\n\t\t\tcaption,\n\t\t\tonCaptionChange,\n\t\t\tisSelected,\n\t\t\tclassName,\n\t\t\ticon,\n\t\t\tlabel,\n\t\t\tinsertBlocksAfter,\n\t\t} = this.props;\n\t\tconst { scripts } = preview;\n\t\tconst { interactive } = this.state;\n\n\t\tconst html = 'photo' === type ? getPhotoHtml( preview ) : preview.html;\n\t\tconst parsedHost = new URL( url ).host.split( '.' );\n\t\tconst parsedHostBaseUrl = parsedHost\n\t\t\t.splice( parsedHost.length - 2, parsedHost.length - 1 )\n\t\t\t.join( '.' );\n\t\tconst iframeTitle = sprintf(\n\t\t\t// translators: %s: host providing embed content e.g: www.youtube.com\n\t\t\t__( 'Embedded content from %s' ),\n\t\t\tparsedHostBaseUrl\n\t\t);\n\t\tconst sandboxClassnames = classnames(\n\t\t\ttype,\n\t\t\tclassName,\n\t\t\t'wp-block-embed__wrapper'\n\t\t);\n\n\t\t// Disabled because the overlay div doesn't actually have a role or functionality\n\t\t// as far as the user is concerned. We're just catching the first click so that\n\t\t// the block can be selected without interacting with the embed preview that the overlay covers.\n\t\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\t\tconst embedWrapper =\n\t\t\t'wp-embed' === type ? (\n\t\t\t\t<WpEmbedPreview html={ html } />\n\t\t\t) : (\n\t\t\t\t<div className=\"wp-block-embed__wrapper\">\n\t\t\t\t\t<SandBox\n\t\t\t\t\t\thtml={ html }\n\t\t\t\t\t\tscripts={ scripts }\n\t\t\t\t\t\ttitle={ iframeTitle }\n\t\t\t\t\t\ttype={ sandboxClassnames }\n\t\t\t\t\t\tonFocus={ this.hideOverlay }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! interactive && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"block-library-embed__interactive-overlay\"\n\t\t\t\t\t\t\tonMouseUp={ this.hideOverlay }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t);\n\t\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n\n\t\treturn (\n\t\t\t<figure\n\t\t\t\tclassName={ classnames( className, 'wp-block-embed', {\n\t\t\t\t\t'is-type-video': 'video' === type,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ previewable ? (\n\t\t\t\t\tembedWrapper\n\t\t\t\t) : (\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\ticon={ <BlockIcon icon={ icon } showColors /> }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t>\n\t\t\t\t\t\t<p className=\"components-placeholder__error\">\n\t\t\t\t\t\t\t<a href={ url }>{ url }</a>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p className=\"components-placeholder__error\">\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: host providing embed content e.g: www.youtube.com */\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\"Embedded content from %s can't be previewed in the editor.\"\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tparsedHostBaseUrl\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</Placeholder>\n\t\t\t\t) }\n\t\t\t\t{ ( ! RichText.isEmpty( caption ) || isSelected ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tclassName={ __experimentalGetElementClassName(\n\t\t\t\t\t\t\t'caption'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tplaceholder={ __( 'Add caption' ) }\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tonChange={ onCaptionChange }\n\t\t\t\t\t\tinlineToolbar\n\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\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</figure>\n\t\t);\n\t}\n}\n\nexport default EmbedPreview;\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport metadata from './block.json';\n\nconst { name: EMBED_BLOCK } = metadata;\n\n/**\n * Default transforms for generic embeds.\n */\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tisMatch: ( node ) =>\n\t\t\t\tnode.nodeName === 'P' &&\n\t\t\t\t/^\\s*(https?:\\/\\/\\S+)\\s*$/i.test( node.textContent ) &&\n\t\t\t\tnode.textContent?.match( /https/gi )?.length === 1,\n\t\t\ttransform: ( node ) => {\n\t\t\t\treturn createBlock( EMBED_BLOCK, {\n\t\t\t\t\turl: node.textContent.trim(),\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/paragraph' ],\n\t\t\tisMatch: ( { url } ) => !! url,\n\t\t\ttransform: ( { url, caption } ) => {\n\t\t\t\tlet value = `<a href=\"${ url }\">${ url }</a>`;\n\t\t\t\tif ( caption?.trim() ) {\n\t\t\t\t\tvalue += `<br />${ caption }`;\n\t\t\t\t}\n\t\t\t\treturn createBlock( 'core/paragraph', {\n\t\t\t\t\tcontent: value,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tembedContentIcon,\n\tembedAudioIcon,\n\tembedPhotoIcon,\n\tembedVideoIcon,\n\tembedTwitterIcon,\n\tembedYouTubeIcon,\n\tembedFacebookIcon,\n\tembedInstagramIcon,\n\tembedWordPressIcon,\n\tembedSpotifyIcon,\n\tembedFlickrIcon,\n\tembedVimeoIcon,\n\tembedRedditIcon,\n\tembedTumblrIcon,\n\tembedAmazonIcon,\n\tembedAnimotoIcon,\n\tembedDailymotionIcon,\n\tembedPinterestIcon,\n\tembedWolframIcon,\n\tembedPocketCastsIcon,\n} from './icons';\n\n/** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */\n\n/**\n * The embed provider services.\n *\n * @type {WPBlockVariation[]}\n */\nconst variations = [\n\t{\n\t\tname: 'twitter',\n\t\ttitle: 'Twitter',\n\t\ticon: embedTwitterIcon,\n\t\tkeywords: [ 'tweet', __( 'social' ) ],\n\t\tdescription: __( 'Embed a tweet.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?twitter\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'twitter', responsive: true },\n\t},\n\t{\n\t\tname: 'youtube',\n\t\ttitle: 'YouTube',\n\t\ticon: embedYouTubeIcon,\n\t\tkeywords: [ __( 'music' ), __( 'video' ) ],\n\t\tdescription: __( 'Embed a YouTube video.' ),\n\t\tpatterns: [\n\t\t\t/^https?:\\/\\/((m|www)\\.)?youtube\\.com\\/.+/i,\n\t\t\t/^https?:\\/\\/youtu\\.be\\/.+/i,\n\t\t],\n\t\tattributes: { providerNameSlug: 'youtube', responsive: true },\n\t},\n\t{\n\t\t// Deprecate Facebook Embed per FB policy\n\t\t// See: https://developers.facebook.com/docs/plugins/oembed-legacy\n\t\tname: 'facebook',\n\t\ttitle: 'Facebook',\n\t\ticon: embedFacebookIcon,\n\t\tkeywords: [ __( 'social' ) ],\n\t\tdescription: __( 'Embed a Facebook post.' ),\n\t\tscope: [ 'block' ],\n\t\tpatterns: [],\n\t\tattributes: {\n\t\t\tproviderNameSlug: 'facebook',\n\t\t\tpreviewable: false,\n\t\t\tresponsive: true,\n\t\t},\n\t},\n\t{\n\t\t// Deprecate Instagram per FB policy\n\t\t// See: https://developers.facebook.com/docs/instagram/oembed-legacy\n\t\tname: 'instagram',\n\t\ttitle: 'Instagram',\n\t\ticon: embedInstagramIcon,\n\t\tkeywords: [ __( 'image' ), __( 'social' ) ],\n\t\tdescription: __( 'Embed an Instagram post.' ),\n\t\tscope: [ 'block' ],\n\t\tpatterns: [],\n\t\tattributes: { providerNameSlug: 'instagram', responsive: true },\n\t},\n\t{\n\t\tname: 'wordpress',\n\t\ttitle: 'WordPress',\n\t\ticon: embedWordPressIcon,\n\t\tkeywords: [ __( 'post' ), __( 'blog' ) ],\n\t\tdescription: __( 'Embed a WordPress post.' ),\n\t\tattributes: {\n\t\t\tproviderNameSlug: 'wordpress',\n\t\t},\n\t},\n\t{\n\t\tname: 'soundcloud',\n\t\ttitle: 'SoundCloud',\n\t\ticon: embedAudioIcon,\n\t\tkeywords: [ __( 'music' ), __( 'audio' ) ],\n\t\tdescription: __( 'Embed SoundCloud content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?soundcloud\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'soundcloud', responsive: true },\n\t},\n\t{\n\t\tname: 'spotify',\n\t\ttitle: 'Spotify',\n\t\ticon: embedSpotifyIcon,\n\t\tkeywords: [ __( 'music' ), __( 'audio' ) ],\n\t\tdescription: __( 'Embed Spotify content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(open|play)\\.spotify\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'spotify', responsive: true },\n\t},\n\t{\n\t\tname: 'flickr',\n\t\ttitle: 'Flickr',\n\t\ticon: embedFlickrIcon,\n\t\tkeywords: [ __( 'image' ) ],\n\t\tdescription: __( 'Embed Flickr content.' ),\n\t\tpatterns: [\n\t\t\t/^https?:\\/\\/(www\\.)?flickr\\.com\\/.+/i,\n\t\t\t/^https?:\\/\\/flic\\.kr\\/.+/i,\n\t\t],\n\t\tattributes: { providerNameSlug: 'flickr', responsive: true },\n\t},\n\t{\n\t\tname: 'vimeo',\n\t\ttitle: 'Vimeo',\n\t\ticon: embedVimeoIcon,\n\t\tkeywords: [ __( 'video' ) ],\n\t\tdescription: __( 'Embed a Vimeo video.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?vimeo\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'vimeo', responsive: true },\n\t},\n\t{\n\t\tname: 'animoto',\n\t\ttitle: 'Animoto',\n\t\ticon: embedAnimotoIcon,\n\t\tdescription: __( 'Embed an Animoto video.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?(animoto|video214)\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'animoto', responsive: true },\n\t},\n\t{\n\t\tname: 'cloudup',\n\t\ttitle: 'Cloudup',\n\t\ticon: embedContentIcon,\n\t\tdescription: __( 'Embed Cloudup content.' ),\n\t\tpatterns: [ /^https?:\\/\\/cloudup\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'cloudup', responsive: true },\n\t},\n\t{\n\t\t// Deprecated since CollegeHumor content is now powered by YouTube.\n\t\tname: 'collegehumor',\n\t\ttitle: 'CollegeHumor',\n\t\ticon: embedVideoIcon,\n\t\tdescription: __( 'Embed CollegeHumor content.' ),\n\t\tscope: [ 'block' ],\n\t\tpatterns: [],\n\t\tattributes: { providerNameSlug: 'collegehumor', responsive: true },\n\t},\n\t{\n\t\tname: 'crowdsignal',\n\t\ttitle: 'Crowdsignal',\n\t\ticon: embedContentIcon,\n\t\tkeywords: [ 'polldaddy', __( 'survey' ) ],\n\t\tdescription: __( 'Embed Crowdsignal (formerly Polldaddy) content.' ),\n\t\tpatterns: [\n\t\t\t/^https?:\\/\\/((.+\\.)?polldaddy\\.com|poll\\.fm|.+\\.survey\\.fm)\\/.+/i,\n\t\t],\n\t\tattributes: { providerNameSlug: 'crowdsignal', responsive: true },\n\t},\n\t{\n\t\tname: 'dailymotion',\n\t\ttitle: 'Dailymotion',\n\t\ticon: embedDailymotionIcon,\n\t\tkeywords: [ __( 'video' ) ],\n\t\tdescription: __( 'Embed a Dailymotion video.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?dailymotion\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'dailymotion', responsive: true },\n\t},\n\t{\n\t\tname: 'imgur',\n\t\ttitle: 'Imgur',\n\t\ticon: embedPhotoIcon,\n\t\tdescription: __( 'Embed Imgur content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(.+\\.)?imgur\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'imgur', responsive: true },\n\t},\n\t{\n\t\tname: 'issuu',\n\t\ttitle: 'Issuu',\n\t\ticon: embedContentIcon,\n\t\tdescription: __( 'Embed Issuu content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?issuu\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'issuu', responsive: true },\n\t},\n\t{\n\t\tname: 'kickstarter',\n\t\ttitle: 'Kickstarter',\n\t\ticon: embedContentIcon,\n\t\tdescription: __( 'Embed Kickstarter content.' ),\n\t\tpatterns: [\n\t\t\t/^https?:\\/\\/(www\\.)?kickstarter\\.com\\/.+/i,\n\t\t\t/^https?:\\/\\/kck\\.st\\/.+/i,\n\t\t],\n\t\tattributes: { providerNameSlug: 'kickstarter', responsive: true },\n\t},\n\t{\n\t\tname: 'mixcloud',\n\t\ttitle: 'Mixcloud',\n\t\ticon: embedAudioIcon,\n\t\tkeywords: [ __( 'music' ), __( 'audio' ) ],\n\t\tdescription: __( 'Embed Mixcloud content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?mixcloud\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'mixcloud', responsive: true },\n\t},\n\t{\n\t\tname: 'pocketcasts',\n\t\ttitle: 'Pocket Casts',\n\t\ticon: embedPocketCastsIcon,\n\t\tkeywords: [ __( 'podcast' ), __( 'audio' ) ],\n\t\tdescription: __( 'Embed a podcast player from Pocket Casts.' ),\n\t\tpatterns: [ /^https:\\/\\/pca.st\\/\\w+/i ],\n\t\tattributes: { providerNameSlug: 'pocketcasts', responsive: true },\n\t},\n\t{\n\t\tname: 'reddit',\n\t\ttitle: 'Reddit',\n\t\ticon: embedRedditIcon,\n\t\tdescription: __( 'Embed a Reddit thread.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?reddit\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'reddit', responsive: true },\n\t},\n\t{\n\t\tname: 'reverbnation',\n\t\ttitle: 'ReverbNation',\n\t\ticon: embedAudioIcon,\n\t\tdescription: __( 'Embed ReverbNation content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?reverbnation\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'reverbnation', responsive: true },\n\t},\n\t{\n\t\tname: 'screencast',\n\t\ttitle: 'Screencast',\n\t\ticon: embedVideoIcon,\n\t\tdescription: __( 'Embed Screencast content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?screencast\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'screencast', responsive: true },\n\t},\n\t{\n\t\tname: 'scribd',\n\t\ttitle: 'Scribd',\n\t\ticon: embedContentIcon,\n\t\tdescription: __( 'Embed Scribd content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?scribd\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'scribd', responsive: true },\n\t},\n\t{\n\t\tname: 'slideshare',\n\t\ttitle: 'Slideshare',\n\t\ticon: embedContentIcon,\n\t\tdescription: __( 'Embed Slideshare content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(.+?\\.)?slideshare\\.net\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'slideshare', responsive: true },\n\t},\n\t{\n\t\tname: 'smugmug',\n\t\ttitle: 'SmugMug',\n\t\ticon: embedPhotoIcon,\n\t\tdescription: __( 'Embed SmugMug content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(.+\\.)?smugmug\\.com\\/.*/i ],\n\t\tattributes: {\n\t\t\tproviderNameSlug: 'smugmug',\n\t\t\tpreviewable: false,\n\t\t\tresponsive: true,\n\t\t},\n\t},\n\t{\n\t\tname: 'speaker-deck',\n\t\ttitle: 'Speaker Deck',\n\t\ticon: embedContentIcon,\n\t\tdescription: __( 'Embed Speaker Deck content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?speakerdeck\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'speaker-deck', responsive: true },\n\t},\n\t{\n\t\tname: 'tiktok',\n\t\ttitle: 'TikTok',\n\t\ticon: embedVideoIcon,\n\t\tkeywords: [ __( 'video' ) ],\n\t\tdescription: __( 'Embed a TikTok video.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?tiktok\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'tiktok', responsive: true },\n\t},\n\t{\n\t\tname: 'ted',\n\t\ttitle: 'TED',\n\t\ticon: embedVideoIcon,\n\t\tdescription: __( 'Embed a TED video.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.|embed\\.)?ted\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'ted', responsive: true },\n\t},\n\t{\n\t\tname: 'tumblr',\n\t\ttitle: 'Tumblr',\n\t\ticon: embedTumblrIcon,\n\t\tkeywords: [ __( 'social' ) ],\n\t\tdescription: __( 'Embed a Tumblr post.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?tumblr\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'tumblr', responsive: true },\n\t},\n\t{\n\t\tname: 'videopress',\n\t\ttitle: 'VideoPress',\n\t\ticon: embedVideoIcon,\n\t\tkeywords: [ __( 'video' ) ],\n\t\tdescription: __( 'Embed a VideoPress video.' ),\n\t\tpatterns: [ /^https?:\\/\\/videopress\\.com\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'videopress', responsive: true },\n\t},\n\t{\n\t\tname: 'wordpress-tv',\n\t\ttitle: 'WordPress.tv',\n\t\ticon: embedVideoIcon,\n\t\tdescription: __( 'Embed a WordPress.tv video.' ),\n\t\tpatterns: [ /^https?:\\/\\/wordpress\\.tv\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'wordpress-tv', responsive: true },\n\t},\n\t{\n\t\tname: 'amazon-kindle',\n\t\ttitle: 'Amazon Kindle',\n\t\ticon: embedAmazonIcon,\n\t\tkeywords: [ __( 'ebook' ) ],\n\t\tdescription: __( 'Embed Amazon Kindle content.' ),\n\t\tpatterns: [\n\t\t\t/^https?:\\/\\/([a-z0-9-]+\\.)?(amazon|amzn)(\\.[a-z]{2,4})+\\/.+/i,\n\t\t\t/^https?:\\/\\/(www\\.)?(a\\.co|z\\.cn)\\/.+/i,\n\t\t],\n\t\tattributes: { providerNameSlug: 'amazon-kindle' },\n\t},\n\t{\n\t\tname: 'pinterest',\n\t\ttitle: 'Pinterest',\n\t\ticon: embedPinterestIcon,\n\t\tkeywords: [ __( 'social' ), __( 'bookmark' ) ],\n\t\tdescription: __( 'Embed Pinterest pins, boards, and profiles.' ),\n\t\tpatterns: [\n\t\t\t/^https?:\\/\\/([a-z]{2}|www)\\.pinterest\\.com(\\.(au|mx))?\\/.*/i,\n\t\t],\n\t\tattributes: { providerNameSlug: 'pinterest' },\n\t},\n\t{\n\t\tname: 'wolfram-cloud',\n\t\ttitle: 'Wolfram',\n\t\ticon: embedWolframIcon,\n\t\tdescription: __( 'Embed Wolfram notebook content.' ),\n\t\tpatterns: [ /^https?:\\/\\/(www\\.)?wolframcloud\\.com\\/obj\\/.+/i ],\n\t\tattributes: { providerNameSlug: 'wolfram-cloud', responsive: true },\n\t},\n];\n\n/**\n * Add `isActive` function to all `embed` variations, if not defined.\n * `isActive` function is used to find a variation match from a created\n *  Block by providing its attributes.\n */\nvariations.forEach( ( variation ) => {\n\tif ( variation.isActive ) return;\n\tvariation.isActive = ( blockAttributes, variationAttributes ) =>\n\t\tblockAttributes.providerNameSlug ===\n\t\tvariationAttributes.providerNameSlug;\n} );\n\nexport default variations;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * Internal dependencies\n */\nimport metadata from './block.json';\n\n/**\n * WordPress dependencies\n */\nimport { RichText } from '@wordpress/block-editor';\n\nconst { attributes: blockAttributes } = metadata;\n\nconst deprecated = [\n\t{\n\t\tattributes: blockAttributes,\n\t\tsave( { attributes: { url, caption, type, providerNameSlug } } ) {\n\t\t\tif ( ! url ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst embedClassName = classnames( 'wp-block-embed', {\n\t\t\t\t[ `is-type-${ type }` ]: type,\n\t\t\t\t[ `is-provider-${ providerNameSlug }` ]: providerNameSlug,\n\t\t\t} );\n\n\t\t\treturn (\n\t\t\t\t<figure className={ embedClassName }>\n\t\t\t\t\t{ `\\n${ url }\\n` /* URL needs to be on its own line. */ }\n\t\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</figure>\n\t\t\t);\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\nimport transforms from './transforms';\nimport variations from './variations';\nimport deprecated from './deprecated';\nimport { embedContentIcon } from './icons';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon: embedContentIcon,\n\tedit,\n\tsave,\n\ttransforms,\n\tvariations,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * Internal dependencies\n */\nimport {\n\tcreateUpgradedEmbedBlock,\n\tgetClassNames,\n\tfallback,\n\tgetEmbedInfoByProvider,\n\tgetMergedAttributesWithPreview,\n} from './util';\nimport EmbedControls from './embed-controls';\nimport { embedContentIcon } from './icons';\nimport EmbedLoading from './embed-loading';\nimport EmbedPlaceholder from './embed-placeholder';\nimport EmbedPreview from './embed-preview';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useBlockProps } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { View } from '@wordpress/primitives';\n\nconst EmbedEdit = ( props ) => {\n\tconst {\n\t\tattributes: {\n\t\t\tproviderNameSlug,\n\t\t\tpreviewable,\n\t\t\tresponsive,\n\t\t\turl: attributesUrl,\n\t\t},\n\t\tattributes,\n\t\tisSelected,\n\t\tonReplace,\n\t\tsetAttributes,\n\t\tinsertBlocksAfter,\n\t\tonFocus,\n\t} = props;\n\n\tconst defaultEmbedInfo = {\n\t\ttitle: _x( 'Embed', 'block title' ),\n\t\ticon: embedContentIcon,\n\t};\n\tconst { icon, title } =\n\t\tgetEmbedInfoByProvider( providerNameSlug ) || defaultEmbedInfo;\n\n\tconst [ url, setURL ] = useState( attributesUrl );\n\tconst [ isEditingURL, setIsEditingURL ] = useState( false );\n\tconst { invalidateResolution } = useDispatch( coreStore );\n\n\tconst { preview, fetching, themeSupportsResponsive, cannotEmbed } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetEmbedPreview,\n\t\t\t\t\tisPreviewEmbedFallback,\n\t\t\t\t\tisRequestingEmbedPreview,\n\t\t\t\t\tgetThemeSupports,\n\t\t\t\t} = select( coreStore );\n\t\t\t\tif ( ! attributesUrl ) {\n\t\t\t\t\treturn { fetching: false, cannotEmbed: false };\n\t\t\t\t}\n\n\t\t\t\tconst embedPreview = getEmbedPreview( attributesUrl );\n\t\t\t\tconst previewIsFallback =\n\t\t\t\t\tisPreviewEmbedFallback( attributesUrl );\n\n\t\t\t\t// The external oEmbed provider does not exist. We got no type info and no html.\n\t\t\t\tconst badEmbedProvider =\n\t\t\t\t\tembedPreview?.html === false &&\n\t\t\t\t\tembedPreview?.type === undefined;\n\t\t\t\t// Some WordPress URLs that can't be embedded will cause the API to return\n\t\t\t\t// a valid JSON response with no HTML and `data.status` set to 404, rather\n\t\t\t\t// than generating a fallback response as other embeds do.\n\t\t\t\tconst wordpressCantEmbed = embedPreview?.data?.status === 404;\n\t\t\t\tconst validPreview =\n\t\t\t\t\t!! embedPreview &&\n\t\t\t\t\t! badEmbedProvider &&\n\t\t\t\t\t! wordpressCantEmbed;\n\t\t\t\treturn {\n\t\t\t\t\tpreview: validPreview ? embedPreview : undefined,\n\t\t\t\t\tfetching: isRequestingEmbedPreview( attributesUrl ),\n\t\t\t\t\tthemeSupportsResponsive:\n\t\t\t\t\t\tgetThemeSupports()[ 'responsive-embeds' ],\n\t\t\t\t\tcannotEmbed: ! validPreview || previewIsFallback,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ attributesUrl ]\n\t\t);\n\n\t/**\n\t * Returns the attributes derived from the preview, merged with the current attributes.\n\t *\n\t * @param {boolean} ignorePreviousClassName Determines if the previous className attribute should be ignored when merging.\n\t * @return {Object} Merged attributes.\n\t */\n\tconst getMergedAttributes = ( ignorePreviousClassName = false ) =>\n\t\tgetMergedAttributesWithPreview(\n\t\t\tattributes,\n\t\t\tpreview,\n\t\t\ttitle,\n\t\t\tresponsive,\n\t\t\tignorePreviousClassName\n\t\t);\n\n\tconst toggleResponsive = () => {\n\t\tconst { allowResponsive, className } = attributes;\n\t\tconst { html } = preview;\n\t\tconst newAllowResponsive = ! allowResponsive;\n\n\t\tsetAttributes( {\n\t\t\tallowResponsive: newAllowResponsive,\n\t\t\tclassName: getClassNames(\n\t\t\t\thtml,\n\t\t\t\tclassName,\n\t\t\t\tresponsive && newAllowResponsive\n\t\t\t),\n\t\t} );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( ! preview?.html || ! cannotEmbed || fetching ) {\n\t\t\treturn;\n\t\t}\n\t\t// At this stage, we're not fetching the preview and know it can't be embedded,\n\t\t// so try removing any trailing slash, and resubmit.\n\t\tconst newURL = attributesUrl.replace( /\\/$/, '' );\n\t\tsetURL( newURL );\n\t\tsetIsEditingURL( false );\n\t\tsetAttributes( { url: newURL } );\n\t}, [ preview?.html, attributesUrl ] );\n\n\t// Handle incoming preview.\n\tuseEffect( () => {\n\t\tif ( preview && ! isEditingURL ) {\n\t\t\t// When obtaining an incoming preview, we set the attributes derived from\n\t\t\t// the preview data. In this case when getting the merged attributes,\n\t\t\t// we ignore the previous classname because it might not match the expected\n\t\t\t// classes by the new preview.\n\t\t\tsetAttributes( getMergedAttributes( true ) );\n\n\t\t\tif ( onReplace ) {\n\t\t\t\tconst upgradedBlock = createUpgradedEmbedBlock(\n\t\t\t\t\tprops,\n\t\t\t\t\tgetMergedAttributes()\n\t\t\t\t);\n\n\t\t\t\tif ( upgradedBlock ) {\n\t\t\t\t\tonReplace( upgradedBlock );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [ preview, isEditingURL ] );\n\n\tconst blockProps = useBlockProps();\n\n\tif ( fetching ) {\n\t\treturn (\n\t\t\t<View { ...blockProps }>\n\t\t\t\t<EmbedLoading />\n\t\t\t</View>\n\t\t);\n\t}\n\n\t// translators: %s: type of embed e.g: \"YouTube\", \"Twitter\", etc. \"Embed\" is used when no specific type exists\n\tconst label = sprintf( __( '%s URL' ), title );\n\n\t// No preview, or we can't embed the current URL, or we've clicked the edit button.\n\tconst showEmbedPlaceholder = ! preview || cannotEmbed || isEditingURL;\n\n\tif ( showEmbedPlaceholder ) {\n\t\treturn (\n\t\t\t<View { ...blockProps }>\n\t\t\t\t<EmbedPlaceholder\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\tif ( event ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetIsEditingURL( false );\n\t\t\t\t\t\tsetAttributes( { url } );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ url }\n\t\t\t\t\tcannotEmbed={ cannotEmbed }\n\t\t\t\t\tonChange={ ( event ) => setURL( event.target.value ) }\n\t\t\t\t\tfallback={ () => fallback( url, onReplace ) }\n\t\t\t\t\ttryAgain={ () => {\n\t\t\t\t\t\tinvalidateResolution( 'getEmbedPreview', [ url ] );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\t// Even though we set attributes that get derived from the preview,\n\t// we don't access them directly because for the initial render,\n\t// the `setAttributes` call will not have taken effect. If we're\n\t// rendering responsive content, setting the responsive classes\n\t// after the preview has been rendered can result in unwanted\n\t// clipping or scrollbars. The `getAttributesFromPreview` function\n\t// that `getMergedAttributes` uses is memoized so that we're not\n\t// calculating them on every render.\n\tconst {\n\t\tcaption,\n\t\ttype,\n\t\tallowResponsive,\n\t\tclassName: classFromPreview,\n\t} = getMergedAttributes();\n\tconst className = classnames( classFromPreview, props.className );\n\n\treturn (\n\t\t<>\n\t\t\t<EmbedControls\n\t\t\t\tshowEditButton={ preview && ! cannotEmbed }\n\t\t\t\tthemeSupportsResponsive={ themeSupportsResponsive }\n\t\t\t\tblockSupportsResponsive={ responsive }\n\t\t\t\tallowResponsive={ allowResponsive }\n\t\t\t\ttoggleResponsive={ toggleResponsive }\n\t\t\t\tswitchBackToURLInput={ () => setIsEditingURL( true ) }\n\t\t\t/>\n\t\t\t<View { ...blockProps }>\n\t\t\t\t<EmbedPreview\n\t\t\t\t\tpreview={ preview }\n\t\t\t\t\tpreviewable={ previewable }\n\t\t\t\t\tclassName={ className }\n\t\t\t\t\turl={ url }\n\t\t\t\t\ttype={ type }\n\t\t\t\t\tcaption={ caption }\n\t\t\t\t\tonCaptionChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { caption: value } )\n\t\t\t\t\t}\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t</>\n\t);\n};\n\nexport default EmbedEdit;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames/dedupe';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { url, caption, type, providerNameSlug } = attributes;\n\n\tif ( ! url ) {\n\t\treturn null;\n\t}\n\n\tconst className = classnames( 'wp-block-embed', {\n\t\t[ `is-type-${ type }` ]: type,\n\t\t[ `is-provider-${ providerNameSlug }` ]: providerNameSlug,\n\t\t[ `wp-block-embed-${ providerNameSlug }` ]: providerNameSlug,\n\t} );\n\n\treturn (\n\t\t<figure { ...useBlockProps.save( { className } ) }>\n\t\t\t<div className=\"wp-block-embed__wrapper\">\n\t\t\t\t{ `\\n${ url }\\n` /* URL needs to be on its own line. */ }\n\t\t\t</div>\n\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t<RichText.Content\n\t\t\t\t\tclassName={ __experimentalGetElementClassName( 'caption' ) }\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</figure>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst file = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 6.2h-5.9l-.6-1.1c-.3-.7-1-1.1-1.8-1.1H5c-1.1 0-2 .9-2 2v11.8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V8.2c0-1.1-.9-2-2-2zm.5 11.6c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h5.8c.2 0 .4.1.4.3l1 2H19c.3 0 .5.2.5.5v9.5z\" />\n\t</SVG>\n);\n\nexport default file;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGetElementClassName,\n\tRichText,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\n\n// Version of the file block without PR#43050 removing the translated aria-label.\nconst v2 = {\n\tattributes: {\n\t\tid: {\n\t\t\ttype: 'number',\n\t\t},\n\t\thref: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tfileId: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a:not([download])',\n\t\t\tattribute: 'id',\n\t\t},\n\t\tfileName: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'a:not([download])',\n\t\t},\n\t\ttextLinkHref: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a:not([download])',\n\t\t\tattribute: 'href',\n\t\t},\n\t\ttextLinkTarget: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a:not([download])',\n\t\t\tattribute: 'target',\n\t\t},\n\t\tshowDownloadButton: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdownloadButtonText: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'a[download]',\n\t\t},\n\t\tdisplayPreview: {\n\t\t\ttype: 'boolean',\n\t\t},\n\t\tpreviewHeight: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 600,\n\t\t},\n\t},\n\tsupports: {\n\t\tanchor: true,\n\t\talign: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\thref,\n\t\t\tfileId,\n\t\t\tfileName,\n\t\t\ttextLinkHref,\n\t\t\ttextLinkTarget,\n\t\t\tshowDownloadButton,\n\t\t\tdownloadButtonText,\n\t\t\tdisplayPreview,\n\t\t\tpreviewHeight,\n\t\t} = attributes;\n\n\t\tconst pdfEmbedLabel = RichText.isEmpty( fileName )\n\t\t\t? __( 'PDF embed' )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %s: filename. */\n\t\t\t\t\t__( 'Embed of %s.' ),\n\t\t\t\t\tfileName\n\t\t\t  );\n\n\t\tconst hasFilename = ! RichText.isEmpty( fileName );\n\n\t\t// Only output an `aria-describedby` when the element it's referring to is\n\t\t// actually rendered.\n\t\tconst describedById = hasFilename ? fileId : undefined;\n\n\t\treturn (\n\t\t\thref && (\n\t\t\t\t<div { ...useBlockProps.save() }>\n\t\t\t\t\t{ displayPreview && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<object\n\t\t\t\t\t\t\t\tclassName=\"wp-block-file__embed\"\n\t\t\t\t\t\t\t\tdata={ href }\n\t\t\t\t\t\t\t\ttype=\"application/pdf\"\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\theight: `${ previewHeight }px`,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taria-label={ pdfEmbedLabel }\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\t{ hasFilename && (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tid={ describedById }\n\t\t\t\t\t\t\thref={ textLinkHref }\n\t\t\t\t\t\t\ttarget={ textLinkTarget }\n\t\t\t\t\t\t\trel={\n\t\t\t\t\t\t\t\ttextLinkTarget\n\t\t\t\t\t\t\t\t\t? 'noreferrer noopener'\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RichText.Content value={ fileName } />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showDownloadButton && (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={ href }\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'wp-block-file__button',\n\t\t\t\t\t\t\t\t__experimentalGetElementClassName( 'button' )\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tdownload={ true }\n\t\t\t\t\t\t\taria-describedby={ describedById }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RichText.Content value={ downloadButtonText } />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t)\n\t\t);\n\t},\n};\n\n// Version of the file block without PR#28062 accessibility fix.\nconst v1 = {\n\tattributes: {\n\t\tid: {\n\t\t\ttype: 'number',\n\t\t},\n\t\thref: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tfileName: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'a:not([download])',\n\t\t},\n\t\ttextLinkHref: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a:not([download])',\n\t\t\tattribute: 'href',\n\t\t},\n\t\ttextLinkTarget: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'a:not([download])',\n\t\t\tattribute: 'target',\n\t\t},\n\t\tshowDownloadButton: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tdownloadButtonText: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'a[download]',\n\t\t},\n\t\tdisplayPreview: {\n\t\t\ttype: 'boolean',\n\t\t},\n\t\tpreviewHeight: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 600,\n\t\t},\n\t},\n\tsupports: {\n\t\tanchor: true,\n\t\talign: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\thref,\n\t\t\tfileName,\n\t\t\ttextLinkHref,\n\t\t\ttextLinkTarget,\n\t\t\tshowDownloadButton,\n\t\t\tdownloadButtonText,\n\t\t\tdisplayPreview,\n\t\t\tpreviewHeight,\n\t\t} = attributes;\n\n\t\tconst pdfEmbedLabel = RichText.isEmpty( fileName )\n\t\t\t? __( 'PDF embed' )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %s: filename. */\n\t\t\t\t\t__( 'Embed of %s.' ),\n\t\t\t\t\tfileName\n\t\t\t  );\n\n\t\treturn (\n\t\t\thref && (\n\t\t\t\t<div { ...useBlockProps.save() }>\n\t\t\t\t\t{ displayPreview && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<object\n\t\t\t\t\t\t\t\tclassName=\"wp-block-file__embed\"\n\t\t\t\t\t\t\t\tdata={ href }\n\t\t\t\t\t\t\t\ttype=\"application/pdf\"\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\theight: `${ previewHeight }px`,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taria-label={ pdfEmbedLabel }\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\t{ ! RichText.isEmpty( fileName ) && (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={ textLinkHref }\n\t\t\t\t\t\t\ttarget={ textLinkTarget }\n\t\t\t\t\t\t\trel={\n\t\t\t\t\t\t\t\ttextLinkTarget\n\t\t\t\t\t\t\t\t\t? 'noreferrer noopener'\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RichText.Content value={ fileName } />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showDownloadButton && (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={ href }\n\t\t\t\t\t\t\tclassName=\"wp-block-file__button\"\n\t\t\t\t\t\t\tdownload={ true }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RichText.Content value={ downloadButtonText } />\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t)\n\t\t);\n\t},\n};\n\nconst deprecated = [ v2, v1 ];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tPanelBody,\n\tRangeControl,\n\tSelectControl,\n\tToggleControl,\n} from '@wordpress/components';\nimport { InspectorControls } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { MIN_PREVIEW_HEIGHT, MAX_PREVIEW_HEIGHT } from './edit';\n\nexport default function FileBlockInspector( {\n\threfs,\n\topenInNewWindow,\n\tshowDownloadButton,\n\tchangeLinkDestinationOption,\n\tchangeOpenInNewWindow,\n\tchangeShowDownloadButton,\n\tdisplayPreview,\n\tchangeDisplayPreview,\n\tpreviewHeight,\n\tchangePreviewHeight,\n} ) {\n\tconst { href, textLinkHref, attachmentPage } = hrefs;\n\n\tlet linkDestinationOptions = [ { value: href, label: __( 'URL' ) } ];\n\tif ( attachmentPage ) {\n\t\tlinkDestinationOptions = [\n\t\t\t{ value: href, label: __( 'Media file' ) },\n\t\t\t{ value: attachmentPage, label: __( 'Attachment page' ) },\n\t\t];\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t{ href.endsWith( '.pdf' ) && (\n\t\t\t\t\t<PanelBody title={ __( 'PDF settings' ) }>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Show inline embed' ) }\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\tdisplayPreview\n\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\"Note: Most phone and tablet browsers won't display embedded PDFs.\"\n\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ !! displayPreview }\n\t\t\t\t\t\t\tonChange={ changeDisplayPreview }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ displayPreview && (\n\t\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Height in pixels' ) }\n\t\t\t\t\t\t\t\tmin={ MIN_PREVIEW_HEIGHT }\n\t\t\t\t\t\t\t\tmax={ Math.max(\n\t\t\t\t\t\t\t\t\tMAX_PREVIEW_HEIGHT,\n\t\t\t\t\t\t\t\t\tpreviewHeight\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvalue={ previewHeight }\n\t\t\t\t\t\t\t\tonChange={ changePreviewHeight }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t) }\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Link to' ) }\n\t\t\t\t\t\tvalue={ textLinkHref }\n\t\t\t\t\t\toptions={ linkDestinationOptions }\n\t\t\t\t\t\tonChange={ changeLinkDestinationOption }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\tchecked={ openInNewWindow }\n\t\t\t\t\t\tonChange={ changeOpenInNewWindow }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Show download button' ) }\n\t\t\t\t\t\tchecked={ showDownloadButton }\n\t\t\t\t\t\tonChange={ changeShowDownloadButton }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n}\n","/**\n * Uses a combination of user agent matching and feature detection to determine whether\n * the current browser supports rendering PDFs inline.\n *\n * @return {boolean} Whether or not the browser supports inline PDFs.\n */\nexport const browserSupportsPdfs = () => {\n\t// Most mobile devices include \"Mobi\" in their UA.\n\tif ( window.navigator.userAgent.indexOf( 'Mobi' ) > -1 ) {\n\t\treturn false;\n\t}\n\n\t// Android tablets are the noteable exception.\n\tif ( window.navigator.userAgent.indexOf( 'Android' ) > -1 ) {\n\t\treturn false;\n\t}\n\n\t// iPad pretends to be a Mac.\n\tif (\n\t\twindow.navigator.userAgent.indexOf( 'Macintosh' ) > -1 &&\n\t\twindow.navigator.maxTouchPoints &&\n\t\twindow.navigator.maxTouchPoints > 2\n\t) {\n\t\treturn false;\n\t}\n\n\t// IE only supports PDFs when there's an ActiveX object available for it.\n\tif (\n\t\t!! ( window.ActiveXObject || 'ActiveXObject' in window ) &&\n\t\t! (\n\t\t\tcreateActiveXObject( 'AcroPDF.PDF' ) ||\n\t\t\tcreateActiveXObject( 'PDF.PdfCtrl' )\n\t\t)\n\t) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\n/**\n * Helper function for creating ActiveX objects, catching any errors that are thrown\n * when it's generated.\n *\n * @param {string} type The name of the ActiveX object to create.\n * @return {window.ActiveXObject|undefined} The generated ActiveXObject, or null if it failed.\n */\nconst createActiveXObject = ( type ) => {\n\tlet ax;\n\ttry {\n\t\tax = new window.ActiveXObject( type );\n\t} catch ( e ) {\n\t\tax = undefined;\n\t}\n\treturn ax;\n};\n\n/**\n * Hides all .wp-block-file__embed elements on the document. This function is only intended\n * to be run on the front-end, it may have weird side effects running in the block editor.\n */\nexport const hidePdfEmbedsOnUnsupportedBrowsers = () => {\n\tif ( ! browserSupportsPdfs() ) {\n\t\tconst embeds = document.getElementsByClassName(\n\t\t\t'wp-block-file__embed'\n\t\t);\n\t\tArray.from( embeds ).forEach( ( embed ) => {\n\t\t\tembed.style.display = 'none';\n\t\t} );\n\t}\n};\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport {\n\t__unstableGetAnimateClassName as getAnimateClassName,\n\tResizableBox,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { __, _x } from '@wordpress/i18n';\nimport { file as icon } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport FileBlockInspector from './inspector';\nimport { browserSupportsPdfs } from './utils';\n\nexport const MIN_PREVIEW_HEIGHT = 200;\nexport const MAX_PREVIEW_HEIGHT = 2000;\n\nfunction ClipboardToolbarButton( { text, disabled } ) {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst ref = useCopyToClipboard( text, () => {\n\t\tcreateNotice( 'info', __( 'Copied URL to clipboard.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t} );\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tclassName=\"components-clipboard-toolbar-button\"\n\t\t\tref={ ref }\n\t\t\tdisabled={ disabled }\n\t\t>\n\t\t\t{ __( 'Copy URL' ) }\n\t\t</ToolbarButton>\n\t);\n}\n\nfunction FileEdit( { attributes, isSelected, setAttributes, clientId } ) {\n\tconst {\n\t\tid,\n\t\tfileId,\n\t\tfileName,\n\t\thref,\n\t\ttextLinkHref,\n\t\ttextLinkTarget,\n\t\tshowDownloadButton,\n\t\tdownloadButtonText,\n\t\tdisplayPreview,\n\t\tpreviewHeight,\n\t} = attributes;\n\tconst { media, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\tmedia:\n\t\t\t\tid === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: select( coreStore ).getMedia( id ),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[ id ]\n\t);\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst { toggleSelection, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Upload a file drag-and-dropped into the editor.\n\t\tif ( isBlobURL( href ) ) {\n\t\t\tconst file = getBlobByURL( href );\n\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ newMedia ] ) => onSelectFile( newMedia ),\n\t\t\t\tonError: onUploadError,\n\t\t\t} );\n\n\t\t\trevokeBlobURL( href );\n\t\t}\n\n\t\tif ( downloadButtonText === undefined ) {\n\t\t\tchangeDownloadButtonText( _x( 'Download', 'button label' ) );\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( ! fileId && href ) {\n\t\t\t// Add a unique fileId to each file block.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { fileId: `wp-block-file--media-${ clientId }` } );\n\t\t}\n\t}, [ href, fileId, clientId ] );\n\n\tfunction onSelectFile( newMedia ) {\n\t\tif ( newMedia && newMedia.url ) {\n\t\t\tconst isPdf = newMedia.url.endsWith( '.pdf' );\n\t\t\tsetAttributes( {\n\t\t\t\thref: newMedia.url,\n\t\t\t\tfileName: newMedia.title,\n\t\t\t\ttextLinkHref: newMedia.url,\n\t\t\t\tid: newMedia.id,\n\t\t\t\tdisplayPreview: isPdf ? true : undefined,\n\t\t\t\tpreviewHeight: isPdf ? 600 : undefined,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tsetAttributes( { href: undefined } );\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction changeLinkDestinationOption( newHref ) {\n\t\t// Choose Media File or Attachment Page (when file is in Media Library).\n\t\tsetAttributes( { textLinkHref: newHref } );\n\t}\n\n\tfunction changeOpenInNewWindow( newValue ) {\n\t\tsetAttributes( {\n\t\t\ttextLinkTarget: newValue ? '_blank' : false,\n\t\t} );\n\t}\n\n\tfunction changeShowDownloadButton( newValue ) {\n\t\tsetAttributes( { showDownloadButton: newValue } );\n\t}\n\n\tfunction changeDownloadButtonText( newValue ) {\n\t\t// Remove anchor tags from button text content.\n\t\tsetAttributes( {\n\t\t\tdownloadButtonText: newValue.replace( /<\\/?a[^>]*>/g, '' ),\n\t\t} );\n\t}\n\n\tfunction changeDisplayPreview( newValue ) {\n\t\tsetAttributes( { displayPreview: newValue } );\n\t}\n\n\tfunction handleOnResizeStop( event, direction, elt, delta ) {\n\t\ttoggleSelection( true );\n\n\t\tconst newHeight = parseInt( previewHeight + delta.height, 10 );\n\t\tsetAttributes( { previewHeight: newHeight } );\n\t}\n\n\tfunction changePreviewHeight( newValue ) {\n\t\tconst newHeight = Math.max(\n\t\t\tparseInt( newValue, 10 ),\n\t\t\tMIN_PREVIEW_HEIGHT\n\t\t);\n\t\tsetAttributes( { previewHeight: newHeight } );\n\t}\n\n\tconst attachmentPage = media && media.link;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\tisBlobURL( href ) && getAnimateClassName( { type: 'loading' } ),\n\t\t\t{\n\t\t\t\t'is-transient': isBlobURL( href ),\n\t\t\t}\n\t\t),\n\t} );\n\n\tconst displayPreviewInEditor = browserSupportsPdfs() && displayPreview;\n\n\tif ( ! href ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabels={ {\n\t\t\t\t\t\ttitle: __( 'File' ),\n\t\t\t\t\t\tinstructions: __(\n\t\t\t\t\t\t\t'Upload a file or pick one from your media library.'\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t\tonSelect={ onSelectFile }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\taccept=\"*\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<FileBlockInspector\n\t\t\t\threfs={ { href, textLinkHref, attachmentPage } }\n\t\t\t\t{ ...{\n\t\t\t\t\topenInNewWindow: !! textLinkTarget,\n\t\t\t\t\tshowDownloadButton,\n\t\t\t\t\tchangeLinkDestinationOption,\n\t\t\t\t\tchangeOpenInNewWindow,\n\t\t\t\t\tchangeShowDownloadButton,\n\t\t\t\t\tdisplayPreview,\n\t\t\t\t\tchangeDisplayPreview,\n\t\t\t\t\tpreviewHeight,\n\t\t\t\t\tchangePreviewHeight,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ href }\n\t\t\t\t\taccept=\"*\"\n\t\t\t\t\tonSelect={ onSelectFile }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t\t<ClipboardToolbarButton\n\t\t\t\t\ttext={ href }\n\t\t\t\t\tdisabled={ isBlobURL( href ) }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ displayPreviewInEditor && (\n\t\t\t\t\t<ResizableBox\n\t\t\t\t\t\tsize={ { height: previewHeight } }\n\t\t\t\t\t\tminHeight={ MIN_PREVIEW_HEIGHT }\n\t\t\t\t\t\tmaxHeight={ MAX_PREVIEW_HEIGHT }\n\t\t\t\t\t\tminWidth=\"100%\"\n\t\t\t\t\t\tgrid={ [ 10, 10 ] }\n\t\t\t\t\t\tenable={ {\n\t\t\t\t\t\t\ttop: false,\n\t\t\t\t\t\t\tright: false,\n\t\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\t\tleft: false,\n\t\t\t\t\t\t\ttopRight: false,\n\t\t\t\t\t\t\tbottomRight: false,\n\t\t\t\t\t\t\tbottomLeft: false,\n\t\t\t\t\t\t\ttopLeft: false,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonResizeStart={ () => toggleSelection( false ) }\n\t\t\t\t\t\tonResizeStop={ handleOnResizeStop }\n\t\t\t\t\t\tshowHandle={ isSelected }\n\t\t\t\t\t>\n\t\t\t\t\t\t<object\n\t\t\t\t\t\t\tclassName=\"wp-block-file__preview\"\n\t\t\t\t\t\t\tdata={ href }\n\t\t\t\t\t\t\ttype=\"application/pdf\"\n\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t'Embed of the selected PDF file.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ ! isSelected && (\n\t\t\t\t\t\t\t<div className=\"wp-block-file__preview-overlay\" />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</ResizableBox>\n\t\t\t\t) }\n\t\t\t\t<div className={ 'wp-block-file__content-wrapper' }>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\tvalue={ fileName }\n\t\t\t\t\t\tplaceholder={ __( 'Write file name…' ) }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tonChange={ ( text ) =>\n\t\t\t\t\t\t\tsetAttributes( { fileName: text } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thref={ textLinkHref }\n\t\t\t\t\t/>\n\t\t\t\t\t{ showDownloadButton && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t'wp-block-file__button-richtext-wrapper'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ /* Using RichText here instead of PlainText so that it can be styled like a button. */ }\n\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\ttagName=\"div\" // Must be block-level or else cursor disappears.\n\t\t\t\t\t\t\t\taria-label={ __( 'Download button text' ) }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'wp-block-file__button',\n\t\t\t\t\t\t\t\t\t__experimentalGetElementClassName(\n\t\t\t\t\t\t\t\t\t\t'button'\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\tvalue={ downloadButtonText }\n\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Add text…' ) }\n\t\t\t\t\t\t\t\tonChange={ ( text ) =>\n\t\t\t\t\t\t\t\t\tchangeDownloadButtonText( text )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default FileEdit;\n","/**\n * External dependencies\n */\nimport { includes } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createBlobURL } from '@wordpress/blob';\nimport { createBlock } from '@wordpress/blocks';\nimport { select } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { getFilename } from '@wordpress/url';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'files',\n\t\t\tisMatch( files ) {\n\t\t\t\treturn files.length > 0;\n\t\t\t},\n\t\t\t// We define a lower priorty (higher number) than the default of 10. This\n\t\t\t// ensures that the File block is only created as a fallback.\n\t\t\tpriority: 15,\n\t\t\ttransform: ( files ) => {\n\t\t\t\tconst blocks = [];\n\n\t\t\t\tfiles.forEach( ( file ) => {\n\t\t\t\t\tconst blobURL = createBlobURL( file );\n\n\t\t\t\t\t// File will be uploaded in componentDidMount()\n\t\t\t\t\tblocks.push(\n\t\t\t\t\t\tcreateBlock( 'core/file', {\n\t\t\t\t\t\t\thref: blobURL,\n\t\t\t\t\t\t\tfileName: file.name,\n\t\t\t\t\t\t\ttextLinkHref: blobURL,\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t} );\n\n\t\t\t\treturn blocks;\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/audio' ],\n\t\t\ttransform: ( attributes ) => {\n\t\t\t\treturn createBlock( 'core/file', {\n\t\t\t\t\thref: attributes.src,\n\t\t\t\t\tfileName: attributes.caption,\n\t\t\t\t\ttextLinkHref: attributes.src,\n\t\t\t\t\tid: attributes.id,\n\t\t\t\t\tanchor: attributes.anchor,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/video' ],\n\t\t\ttransform: ( attributes ) => {\n\t\t\t\treturn createBlock( 'core/file', {\n\t\t\t\t\thref: attributes.src,\n\t\t\t\t\tfileName: attributes.caption,\n\t\t\t\t\ttextLinkHref: attributes.src,\n\t\t\t\t\tid: attributes.id,\n\t\t\t\t\tanchor: attributes.anchor,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/image' ],\n\t\t\ttransform: ( attributes ) => {\n\t\t\t\treturn createBlock( 'core/file', {\n\t\t\t\t\thref: attributes.url,\n\t\t\t\t\tfileName:\n\t\t\t\t\t\tattributes.caption || getFilename( attributes.url ),\n\t\t\t\t\ttextLinkHref: attributes.url,\n\t\t\t\t\tid: attributes.id,\n\t\t\t\t\tanchor: attributes.anchor,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/audio' ],\n\t\t\tisMatch: ( { id } ) => {\n\t\t\t\tif ( ! id ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst { getMedia } = select( coreStore );\n\t\t\t\tconst media = getMedia( id );\n\t\t\t\treturn !! media && includes( media.mime_type, 'audio' );\n\t\t\t},\n\t\t\ttransform: ( attributes ) => {\n\t\t\t\treturn createBlock( 'core/audio', {\n\t\t\t\t\tsrc: attributes.href,\n\t\t\t\t\tcaption: attributes.fileName,\n\t\t\t\t\tid: attributes.id,\n\t\t\t\t\tanchor: attributes.anchor,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/video' ],\n\t\t\tisMatch: ( { id } ) => {\n\t\t\t\tif ( ! id ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst { getMedia } = select( coreStore );\n\t\t\t\tconst media = getMedia( id );\n\t\t\t\treturn !! media && includes( media.mime_type, 'video' );\n\t\t\t},\n\t\t\ttransform: ( attributes ) => {\n\t\t\t\treturn createBlock( 'core/video', {\n\t\t\t\t\tsrc: attributes.href,\n\t\t\t\t\tcaption: attributes.fileName,\n\t\t\t\t\tid: attributes.id,\n\t\t\t\t\tanchor: attributes.anchor,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/image' ],\n\t\t\tisMatch: ( { id } ) => {\n\t\t\t\tif ( ! id ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst { getMedia } = select( coreStore );\n\t\t\t\tconst media = getMedia( id );\n\t\t\t\treturn !! media && includes( media.mime_type, 'image' );\n\t\t\t},\n\t\t\ttransform: ( attributes ) => {\n\t\t\t\treturn createBlock( 'core/image', {\n\t\t\t\t\turl: attributes.href,\n\t\t\t\t\tcaption: attributes.fileName,\n\t\t\t\t\tid: attributes.id,\n\t\t\t\t\tanchor: attributes.anchor,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { _x } from '@wordpress/i18n';\nimport { file as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\thref: 'https://upload.wikimedia.org/wikipedia/commons/d/dd/Armstrong_Small_Step.ogg',\n\t\t\tfileName: _x( 'Armstrong_Small_Step', 'Name of the file' ),\n\t\t},\n\t},\n\ttransforms,\n\tdeprecated,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\thref,\n\t\tfileId,\n\t\tfileName,\n\t\ttextLinkHref,\n\t\ttextLinkTarget,\n\t\tshowDownloadButton,\n\t\tdownloadButtonText,\n\t\tdisplayPreview,\n\t\tpreviewHeight,\n\t} = attributes;\n\n\tconst pdfEmbedLabel = RichText.isEmpty( fileName ) ? 'PDF embed' : fileName;\n\n\tconst hasFilename = ! RichText.isEmpty( fileName );\n\n\t// Only output an `aria-describedby` when the element it's referring to is\n\t// actually rendered.\n\tconst describedById = hasFilename ? fileId : undefined;\n\n\treturn (\n\t\thref && (\n\t\t\t<div { ...useBlockProps.save() }>\n\t\t\t\t{ displayPreview && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<object\n\t\t\t\t\t\t\tclassName=\"wp-block-file__embed\"\n\t\t\t\t\t\t\tdata={ href }\n\t\t\t\t\t\t\ttype=\"application/pdf\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\theight: `${ previewHeight }px`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taria-label={ pdfEmbedLabel }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t{ hasFilename && (\n\t\t\t\t\t<a\n\t\t\t\t\t\tid={ describedById }\n\t\t\t\t\t\thref={ textLinkHref }\n\t\t\t\t\t\ttarget={ textLinkTarget }\n\t\t\t\t\t\trel={\n\t\t\t\t\t\t\ttextLinkTarget ? 'noreferrer noopener' : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<RichText.Content value={ fileName } />\n\t\t\t\t\t</a>\n\t\t\t\t) }\n\t\t\t\t{ showDownloadButton && (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={ href }\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-file__button',\n\t\t\t\t\t\t\t__experimentalGetElementClassName( 'button' )\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tdownload={ true }\n\t\t\t\t\t\taria-describedby={ describedById }\n\t\t\t\t\t>\n\t\t\t\t\t\t<RichText.Content value={ downloadButtonText } />\n\t\t\t\t\t</a>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t)\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const gallery = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M20.2 8v11c0 .7-.6 1.2-1.2 1.2H6v1.5h13c1.5 0 2.7-1.2 2.7-2.8V8h-1.5zM18 16.4V4.6c0-.9-.7-1.6-1.6-1.6H4.6C3.7 3 3 3.7 3 4.6v11.8c0 .9.7 1.6 1.6 1.6h11.8c.9 0 1.6-.7 1.6-1.6zM4.5 4.6c0-.1.1-.1.1-.1h11.8c.1 0 .1.1.1.1V12l-2.3-1.7c-.3-.2-.6-.2-.9 0l-2.9 2.1L8 11.3c-.2-.1-.5-.1-.7 0l-2.9 1.5V4.6zm0 11.8v-1.8l3.2-1.7 2.4 1.2c.2.1.5.1.8-.1l2.8-2 2.8 2v2.5c0 .1-.1.1-.1.1H4.6c0-.1-.1-.2-.1-.2z\" />\n\t</SVG>\n);\n\nexport default gallery;\n","export const LINK_DESTINATION_NONE = 'none';\nexport const LINK_DESTINATION_MEDIA = 'media';\nexport const LINK_DESTINATION_ATTACHMENT = 'attachment';\nexport const LINK_DESTINATION_MEDIA_WP_CORE = 'file';\nexport const LINK_DESTINATION_ATTACHMENT_WP_CORE = 'post';\n","/**\n * External dependencies\n */\nimport { get, pick } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Platform } from '@wordpress/element';\n\nexport function defaultColumnsNumber( imageCount ) {\n\treturn imageCount ? Math.min( 3, imageCount ) : 3;\n}\n\nexport const pickRelevantMediaFiles = ( image, sizeSlug = 'large' ) => {\n\tconst imageProps = pick( image, [ 'alt', 'id', 'link' ] );\n\timageProps.url =\n\t\tget( image, [ 'sizes', sizeSlug, 'url' ] ) ||\n\t\tget( image, [ 'media_details', 'sizes', sizeSlug, 'source_url' ] ) ||\n\t\timage.url ||\n\t\timage.source_url;\n\tconst fullUrl =\n\t\tget( image, [ 'sizes', 'full', 'url' ] ) ||\n\t\tget( image, [ 'media_details', 'sizes', 'full', 'source_url' ] );\n\tif ( fullUrl ) {\n\t\timageProps.fullUrl = fullUrl;\n\t}\n\treturn imageProps;\n};\n\nfunction getGalleryBlockV2Enabled() {\n\t// We want to fail early here, at least during beta testing phase, to ensure\n\t// there aren't instances where undefined values cause false negatives.\n\tif ( ! window.wp || typeof window.wp.galleryBlockV2Enabled !== 'boolean' ) {\n\t\tthrow 'window.wp.galleryBlockV2Enabled is not defined';\n\t}\n\treturn window.wp.galleryBlockV2Enabled;\n}\n\n/**\n * The new gallery block format is not compatible with the use_BalanceTags option\n * in WP versions <= 5.8 https://core.trac.wordpress.org/ticket/54130. The\n * window.wp.galleryBlockV2Enabled flag is set in lib/compat.php. This method\n * can be removed when minimum supported WP version >=5.9.\n */\nexport function isGalleryV2Enabled() {\n\t// The logic for the native version is located in a different if statement\n\t// due to a lint rule that prohibits a single conditional combining\n\t// `process.env.IS_GUTENBERG_PLUGIN` with a native platform check.\n\tif ( Platform.isNative ) {\n\t\treturn getGalleryBlockV2Enabled();\n\t}\n\n\t// Only run the Gallery version compat check if the plugin is running, otherwise\n\t// assume we are in 5.9 core and enable by default.\n\tif ( process.env.IS_GUTENBERG_PLUGIN ) {\n\t\treturn getGalleryBlockV2Enabled();\n\t}\n\n\treturn true;\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { map, some } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n} from './constants';\nimport { isGalleryV2Enabled } from './shared';\n\nconst DEPRECATED_LINK_DESTINATION_MEDIA = 'file';\nconst DEPRECATED_LINK_DESTINATION_ATTACHMENT = 'post';\n\n/**\n * Original function to determine default number of columns from a block's\n * attributes.\n *\n * Used in deprecations: v1-6, for versions of the gallery block that didn't use inner blocks.\n *\n * @param {Object} attributes Block attributes.\n * @return {number}           Default number of columns for the gallery.\n */\nexport function defaultColumnsNumberV1( attributes ) {\n\treturn Math.min( 3, attributes?.images?.length );\n}\n\n/**\n * Original function to determine new href and linkDestination values for an image block from the\n * supplied Gallery link destination.\n *\n * Used in deprecations: v1-6.\n *\n * @param {Object} image       Gallery image.\n * @param {string} destination Gallery's selected link destination.\n * @return {Object}            New attributes to assign to image block.\n */\nexport function getHrefAndDestination( image, destination ) {\n\t// Need to determine the URL that the selected destination maps to.\n\t// Gutenberg and WordPress use different constants so the new link\n\t// destination also needs to be tweaked.\n\tswitch ( destination ) {\n\t\tcase DEPRECATED_LINK_DESTINATION_MEDIA:\n\t\t\treturn {\n\t\t\t\thref: image?.source_url || image?.url, // eslint-disable-line camelcase\n\t\t\t\tlinkDestination: LINK_DESTINATION_MEDIA,\n\t\t\t};\n\t\tcase DEPRECATED_LINK_DESTINATION_ATTACHMENT:\n\t\t\treturn {\n\t\t\t\thref: image?.link,\n\t\t\t\tlinkDestination: LINK_DESTINATION_ATTACHMENT,\n\t\t\t};\n\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\treturn {\n\t\t\t\thref: image?.source_url || image?.url, // eslint-disable-line camelcase\n\t\t\t\tlinkDestination: LINK_DESTINATION_MEDIA,\n\t\t\t};\n\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\treturn {\n\t\t\t\thref: image?.link,\n\t\t\t\tlinkDestination: LINK_DESTINATION_ATTACHMENT,\n\t\t\t};\n\t\tcase LINK_DESTINATION_NONE:\n\t\t\treturn {\n\t\t\t\thref: undefined,\n\t\t\t\tlinkDestination: LINK_DESTINATION_NONE,\n\t\t\t};\n\t}\n\n\treturn {};\n}\n\nfunction runV2Migration( attributes ) {\n\tlet linkTo = attributes.linkTo ? attributes.linkTo : 'none';\n\n\tif ( linkTo === 'post' ) {\n\t\tlinkTo = 'attachment';\n\t} else if ( linkTo === 'file' ) {\n\t\tlinkTo = 'media';\n\t}\n\n\tconst imageBlocks = attributes.images.map( ( image ) => {\n\t\treturn getImageBlock( image, attributes.sizeSlug, linkTo );\n\t} );\n\n\tconst { images, ids, ...restAttributes } = attributes;\n\n\treturn [\n\t\t{\n\t\t\t...restAttributes,\n\t\t\tlinkTo,\n\t\t\tallowResize: false,\n\t\t},\n\t\timageBlocks,\n\t];\n}\n/**\n * Gets an Image block from gallery image data\n *\n * Used to migrate Galleries to nested Image InnerBlocks.\n *\n * @param {Object} image    Image properties.\n * @param {string} sizeSlug Gallery sizeSlug attribute.\n * @param {string} linkTo   Gallery linkTo attribute.\n * @return {Object}         Image block.\n */\nexport function getImageBlock( image, sizeSlug, linkTo ) {\n\treturn createBlock( 'core/image', {\n\t\t...( image.id && { id: parseInt( image.id ) } ),\n\t\turl: image.url,\n\t\talt: image.alt,\n\t\tcaption: image.caption,\n\t\tsizeSlug,\n\t\t...getHrefAndDestination( image, linkTo ),\n\t} );\n}\n\nconst v6 = {\n\tattributes: {\n\t\timages: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [],\n\t\t\tsource: 'query',\n\t\t\tselector: '.blocks-gallery-item',\n\t\t\tquery: {\n\t\t\t\turl: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'src',\n\t\t\t\t},\n\t\t\t\tfullUrl: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-full-url',\n\t\t\t\t},\n\t\t\t\tlink: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-link',\n\t\t\t\t},\n\t\t\t\talt: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'alt',\n\t\t\t\t\tdefault: '',\n\t\t\t\t},\n\t\t\t\tid: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-id',\n\t\t\t\t},\n\t\t\t\tcaption: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'html',\n\t\t\t\t\tselector: '.blocks-gallery-item__caption',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tids: {\n\t\t\ttype: 'array',\n\t\t\titems: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\tdefault: [],\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: 'number',\n\t\t\tminimum: 1,\n\t\t\tmaximum: 8,\n\t\t},\n\t\tcaption: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: '.blocks-gallery-caption',\n\t\t},\n\t\timageCrop: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tfixedHeight: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tlinkTo: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tsizeSlug: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'large',\n\t\t},\n\t},\n\tsupports: {\n\t\tanchor: true,\n\t\talign: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\timages,\n\t\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\t\timageCrop,\n\t\t\tcaption,\n\t\t\tlinkTo,\n\t\t} = attributes;\n\t\tconst className = `columns-${ columns } ${\n\t\t\timageCrop ? 'is-cropped' : ''\n\t\t}`;\n\n\t\treturn (\n\t\t\t<figure { ...useBlockProps.save( { className } ) }>\n\t\t\t\t<ul className=\"blocks-gallery-grid\">\n\t\t\t\t\t{ images.map( ( image ) => {\n\t\t\t\t\t\tlet href;\n\n\t\t\t\t\t\tswitch ( linkTo ) {\n\t\t\t\t\t\t\tcase DEPRECATED_LINK_DESTINATION_MEDIA:\n\t\t\t\t\t\t\t\thref = image.fullUrl || image.url;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase DEPRECATED_LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\t\t\t\thref = image.link;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst img = (\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tsrc={ image.url }\n\t\t\t\t\t\t\t\talt={ image.alt }\n\t\t\t\t\t\t\t\tdata-id={ image.id }\n\t\t\t\t\t\t\t\tdata-full-url={ image.fullUrl }\n\t\t\t\t\t\t\t\tdata-link={ image.link }\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\timage.id ? `wp-image-${ image.id }` : null\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\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tkey={ image.id || image.url }\n\t\t\t\t\t\t\t\tclassName=\"blocks-gallery-item\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t{ href ? (\n\t\t\t\t\t\t\t\t\t\t<a href={ href }>{ img }</a>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\timg\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ ! RichText.isEmpty( image.caption ) && (\n\t\t\t\t\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"blocks-gallery-item__caption\"\n\t\t\t\t\t\t\t\t\t\t\tvalue={ image.caption }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</figure>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ul>\n\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tclassName=\"blocks-gallery-caption\"\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</figure>\n\t\t);\n\t},\n\tmigrate( attributes ) {\n\t\tif ( isGalleryV2Enabled() ) {\n\t\t\treturn runV2Migration( attributes );\n\t\t}\n\n\t\treturn attributes;\n\t},\n};\nconst v5 = {\n\tattributes: {\n\t\timages: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [],\n\t\t\tsource: 'query',\n\t\t\tselector: '.blocks-gallery-item',\n\t\t\tquery: {\n\t\t\t\turl: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'src',\n\t\t\t\t},\n\t\t\t\tfullUrl: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-full-url',\n\t\t\t\t},\n\t\t\t\tlink: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-link',\n\t\t\t\t},\n\t\t\t\talt: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'alt',\n\t\t\t\t\tdefault: '',\n\t\t\t\t},\n\t\t\t\tid: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-id',\n\t\t\t\t},\n\t\t\t\tcaption: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'html',\n\t\t\t\t\tselector: '.blocks-gallery-item__caption',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tids: {\n\t\t\ttype: 'array',\n\t\t\titems: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\tdefault: [],\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: 'number',\n\t\t\tminimum: 1,\n\t\t\tmaximum: 8,\n\t\t},\n\t\tcaption: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: '.blocks-gallery-caption',\n\t\t},\n\t\timageCrop: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tlinkTo: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'none',\n\t\t},\n\t\tsizeSlug: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'large',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: true,\n\t},\n\tisEligible( { linkTo } ) {\n\t\treturn ! linkTo || linkTo === 'attachment' || linkTo === 'media';\n\t},\n\tmigrate( attributes ) {\n\t\tif ( isGalleryV2Enabled() ) {\n\t\t\treturn runV2Migration( attributes );\n\t\t}\n\n\t\tlet linkTo = attributes.linkTo;\n\n\t\tif ( ! attributes.linkTo ) {\n\t\t\tlinkTo = 'none';\n\t\t} else if ( attributes.linkTo === 'attachment' ) {\n\t\t\tlinkTo = 'post';\n\t\t} else if ( attributes.linkTo === 'media' ) {\n\t\t\tlinkTo = 'file';\n\t\t}\n\t\treturn {\n\t\t\t...attributes,\n\t\t\tlinkTo,\n\t\t};\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\timages,\n\t\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\t\timageCrop,\n\t\t\tcaption,\n\t\t\tlinkTo,\n\t\t} = attributes;\n\n\t\treturn (\n\t\t\t<figure\n\t\t\t\tclassName={ `columns-${ columns } ${\n\t\t\t\t\timageCrop ? 'is-cropped' : ''\n\t\t\t\t}` }\n\t\t\t>\n\t\t\t\t<ul className=\"blocks-gallery-grid\">\n\t\t\t\t\t{ images.map( ( image ) => {\n\t\t\t\t\t\tlet href;\n\n\t\t\t\t\t\tswitch ( linkTo ) {\n\t\t\t\t\t\t\tcase 'media':\n\t\t\t\t\t\t\t\thref = image.fullUrl || image.url;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'attachment':\n\t\t\t\t\t\t\t\thref = image.link;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst img = (\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tsrc={ image.url }\n\t\t\t\t\t\t\t\talt={ image.alt }\n\t\t\t\t\t\t\t\tdata-id={ image.id }\n\t\t\t\t\t\t\t\tdata-full-url={ image.fullUrl }\n\t\t\t\t\t\t\t\tdata-link={ image.link }\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\timage.id ? `wp-image-${ image.id }` : null\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\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tkey={ image.id || image.url }\n\t\t\t\t\t\t\t\tclassName=\"blocks-gallery-item\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t{ href ? (\n\t\t\t\t\t\t\t\t\t\t<a href={ href }>{ img }</a>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\timg\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ ! RichText.isEmpty( image.caption ) && (\n\t\t\t\t\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"blocks-gallery-item__caption\"\n\t\t\t\t\t\t\t\t\t\t\tvalue={ image.caption }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</figure>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ul>\n\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tclassName=\"blocks-gallery-caption\"\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</figure>\n\t\t);\n\t},\n};\n\nconst v4 = {\n\tattributes: {\n\t\timages: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [],\n\t\t\tsource: 'query',\n\t\t\tselector: '.blocks-gallery-item',\n\t\t\tquery: {\n\t\t\t\turl: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'src',\n\t\t\t\t},\n\t\t\t\tfullUrl: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-full-url',\n\t\t\t\t},\n\t\t\t\tlink: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-link',\n\t\t\t\t},\n\t\t\t\talt: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'alt',\n\t\t\t\t\tdefault: '',\n\t\t\t\t},\n\t\t\t\tid: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-id',\n\t\t\t\t},\n\t\t\t\tcaption: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'html',\n\t\t\t\t\tselector: '.blocks-gallery-item__caption',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tids: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [],\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: 'number',\n\t\t},\n\t\tcaption: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: '.blocks-gallery-caption',\n\t\t},\n\t\timageCrop: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tlinkTo: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'none',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: true,\n\t},\n\tisEligible( { ids } ) {\n\t\treturn ids && ids.some( ( id ) => typeof id === 'string' );\n\t},\n\tmigrate( attributes ) {\n\t\tif ( isGalleryV2Enabled() ) {\n\t\t\treturn runV2Migration( attributes );\n\t\t}\n\n\t\treturn {\n\t\t\t...attributes,\n\t\t\tids: map( attributes.ids, ( id ) => {\n\t\t\t\tconst parsedId = parseInt( id, 10 );\n\t\t\t\treturn Number.isInteger( parsedId ) ? parsedId : null;\n\t\t\t} ),\n\t\t};\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\timages,\n\t\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\t\timageCrop,\n\t\t\tcaption,\n\t\t\tlinkTo,\n\t\t} = attributes;\n\n\t\treturn (\n\t\t\t<figure\n\t\t\t\tclassName={ `columns-${ columns } ${\n\t\t\t\t\timageCrop ? 'is-cropped' : ''\n\t\t\t\t}` }\n\t\t\t>\n\t\t\t\t<ul className=\"blocks-gallery-grid\">\n\t\t\t\t\t{ images.map( ( image ) => {\n\t\t\t\t\t\tlet href;\n\n\t\t\t\t\t\tswitch ( linkTo ) {\n\t\t\t\t\t\t\tcase 'media':\n\t\t\t\t\t\t\t\thref = image.fullUrl || image.url;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'attachment':\n\t\t\t\t\t\t\t\thref = image.link;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst img = (\n\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\tsrc={ image.url }\n\t\t\t\t\t\t\t\talt={ image.alt }\n\t\t\t\t\t\t\t\tdata-id={ image.id }\n\t\t\t\t\t\t\t\tdata-full-url={ image.fullUrl }\n\t\t\t\t\t\t\t\tdata-link={ image.link }\n\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\timage.id ? `wp-image-${ image.id }` : null\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\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tkey={ image.id || image.url }\n\t\t\t\t\t\t\t\tclassName=\"blocks-gallery-item\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t\t{ href ? (\n\t\t\t\t\t\t\t\t\t\t<a href={ href }>{ img }</a>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\timg\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ ! RichText.isEmpty( image.caption ) && (\n\t\t\t\t\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"blocks-gallery-item__caption\"\n\t\t\t\t\t\t\t\t\t\t\tvalue={ image.caption }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</figure>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ul>\n\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tclassName=\"blocks-gallery-caption\"\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</figure>\n\t\t);\n\t},\n};\nconst v3 = {\n\tattributes: {\n\t\timages: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [],\n\t\t\tsource: 'query',\n\t\t\tselector: 'ul.wp-block-gallery .blocks-gallery-item',\n\t\t\tquery: {\n\t\t\t\turl: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'src',\n\t\t\t\t},\n\t\t\t\tfullUrl: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-full-url',\n\t\t\t\t},\n\t\t\t\talt: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'alt',\n\t\t\t\t\tdefault: '',\n\t\t\t\t},\n\t\t\t\tid: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-id',\n\t\t\t\t},\n\t\t\t\tlink: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-link',\n\t\t\t\t},\n\t\t\t\tcaption: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'html',\n\t\t\t\t\tselector: 'figcaption',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tids: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [],\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: 'number',\n\t\t},\n\t\timageCrop: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tlinkTo: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'none',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\timages,\n\t\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\t\timageCrop,\n\t\t\tlinkTo,\n\t\t} = attributes;\n\t\treturn (\n\t\t\t<ul\n\t\t\t\tclassName={ `columns-${ columns } ${\n\t\t\t\t\timageCrop ? 'is-cropped' : ''\n\t\t\t\t}` }\n\t\t\t>\n\t\t\t\t{ images.map( ( image ) => {\n\t\t\t\t\tlet href;\n\n\t\t\t\t\tswitch ( linkTo ) {\n\t\t\t\t\t\tcase 'media':\n\t\t\t\t\t\t\thref = image.fullUrl || image.url;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'attachment':\n\t\t\t\t\t\t\thref = image.link;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst img = (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={ image.url }\n\t\t\t\t\t\t\talt={ image.alt }\n\t\t\t\t\t\t\tdata-id={ image.id }\n\t\t\t\t\t\t\tdata-full-url={ image.fullUrl }\n\t\t\t\t\t\t\tdata-link={ image.link }\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\timage.id ? `wp-image-${ image.id }` : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={ image.id || image.url }\n\t\t\t\t\t\t\tclassName=\"blocks-gallery-item\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t{ href ? <a href={ href }>{ img }</a> : img }\n\t\t\t\t\t\t\t\t{ image.caption && image.caption.length > 0 && (\n\t\t\t\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\t\t\t\tvalue={ image.caption }\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</figure>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</ul>\n\t\t);\n\t},\n\tmigrate( attributes ) {\n\t\tif ( isGalleryV2Enabled() ) {\n\t\t\treturn runV2Migration( attributes );\n\t\t}\n\t\treturn attributes;\n\t},\n};\nconst v2 = {\n\tattributes: {\n\t\timages: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [],\n\t\t\tsource: 'query',\n\t\t\tselector: 'ul.wp-block-gallery .blocks-gallery-item',\n\t\t\tquery: {\n\t\t\t\turl: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'src',\n\t\t\t\t},\n\t\t\t\talt: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'alt',\n\t\t\t\t\tdefault: '',\n\t\t\t\t},\n\t\t\t\tid: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-id',\n\t\t\t\t},\n\t\t\t\tlink: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t\tattribute: 'data-link',\n\t\t\t\t},\n\t\t\t\tcaption: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'html',\n\t\t\t\t\tselector: 'figcaption',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: 'number',\n\t\t},\n\t\timageCrop: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tlinkTo: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'none',\n\t\t},\n\t},\n\tisEligible( { images, ids } ) {\n\t\treturn (\n\t\t\timages &&\n\t\t\timages.length > 0 &&\n\t\t\t( ( ! ids && images ) ||\n\t\t\t\t( ids && images && ids.length !== images.length ) ||\n\t\t\t\tsome( images, ( id, index ) => {\n\t\t\t\t\tif ( ! id && ids[ index ] !== null ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn parseInt( id, 10 ) !== ids[ index ];\n\t\t\t\t} ) )\n\t\t);\n\t},\n\tmigrate( attributes ) {\n\t\tif ( isGalleryV2Enabled() ) {\n\t\t\treturn runV2Migration( attributes );\n\t\t}\n\t\treturn {\n\t\t\t...attributes,\n\t\t\tids: map( attributes.images, ( { id } ) => {\n\t\t\t\tif ( ! id ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn parseInt( id, 10 );\n\t\t\t} ),\n\t\t};\n\t},\n\tsupports: {\n\t\talign: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\timages,\n\t\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\t\timageCrop,\n\t\t\tlinkTo,\n\t\t} = attributes;\n\t\treturn (\n\t\t\t<ul\n\t\t\t\tclassName={ `columns-${ columns } ${\n\t\t\t\t\timageCrop ? 'is-cropped' : ''\n\t\t\t\t}` }\n\t\t\t>\n\t\t\t\t{ images.map( ( image ) => {\n\t\t\t\t\tlet href;\n\n\t\t\t\t\tswitch ( linkTo ) {\n\t\t\t\t\t\tcase 'media':\n\t\t\t\t\t\t\thref = image.url;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'attachment':\n\t\t\t\t\t\t\thref = image.link;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst img = (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={ image.url }\n\t\t\t\t\t\t\talt={ image.alt }\n\t\t\t\t\t\t\tdata-id={ image.id }\n\t\t\t\t\t\t\tdata-link={ image.link }\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\timage.id ? `wp-image-${ image.id }` : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={ image.id || image.url }\n\t\t\t\t\t\t\tclassName=\"blocks-gallery-item\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t{ href ? <a href={ href }>{ img }</a> : img }\n\t\t\t\t\t\t\t\t{ image.caption && image.caption.length > 0 && (\n\t\t\t\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\t\t\t\tvalue={ image.caption }\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</figure>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</ul>\n\t\t);\n\t},\n};\n\nconst v1 = {\n\tattributes: {\n\t\timages: {\n\t\t\ttype: 'array',\n\t\t\tdefault: [],\n\t\t\tsource: 'query',\n\t\t\tselector: 'div.wp-block-gallery figure.blocks-gallery-image img',\n\t\t\tquery: {\n\t\t\t\turl: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tattribute: 'src',\n\t\t\t\t},\n\t\t\t\talt: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tattribute: 'alt',\n\t\t\t\t\tdefault: '',\n\t\t\t\t},\n\t\t\t\tid: {\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tattribute: 'data-id',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: 'number',\n\t\t},\n\t\timageCrop: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tlinkTo: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'none',\n\t\t},\n\t\talign: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'none',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\timages,\n\t\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\t\talign,\n\t\t\timageCrop,\n\t\t\tlinkTo,\n\t\t} = attributes;\n\t\tconst className = classnames( `columns-${ columns }`, {\n\t\t\talignnone: align === 'none',\n\t\t\t'is-cropped': imageCrop,\n\t\t} );\n\t\treturn (\n\t\t\t<div className={ className }>\n\t\t\t\t{ images.map( ( image ) => {\n\t\t\t\t\tlet href;\n\n\t\t\t\t\tswitch ( linkTo ) {\n\t\t\t\t\t\tcase 'media':\n\t\t\t\t\t\t\thref = image.url;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'attachment':\n\t\t\t\t\t\t\thref = image.link;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst img = (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={ image.url }\n\t\t\t\t\t\t\talt={ image.alt }\n\t\t\t\t\t\t\tdata-id={ image.id }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<figure\n\t\t\t\t\t\t\tkey={ image.id || image.url }\n\t\t\t\t\t\t\tclassName=\"blocks-gallery-image\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ href ? <a href={ href }>{ img }</a> : img }\n\t\t\t\t\t\t</figure>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</div>\n\t\t);\n\t},\n\tmigrate( attributes ) {\n\t\tif ( isGalleryV2Enabled() ) {\n\t\t\treturn runV2Migration( attributes );\n\t\t}\n\n\t\treturn attributes;\n\t},\n};\n\nexport default [ v6, v5, v4, v3, v2, v1 ];\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"viewport\"];","/**\n * WordPress dependencies\n */\nimport { BlockIcon } from '@wordpress/block-editor';\nimport { gallery as icon } from '@wordpress/icons';\n\nexport const sharedIcon = <BlockIcon icon={ icon } />;\n","export const MIN_SIZE = 20;\nexport const LINK_DESTINATION_NONE = 'none';\nexport const LINK_DESTINATION_MEDIA = 'media';\nexport const LINK_DESTINATION_ATTACHMENT = 'attachment';\nexport const LINK_DESTINATION_CUSTOM = 'custom';\nexport const NEW_TAB_REL = [ 'noreferrer', 'noopener' ];\nexport const ALLOWED_MEDIA_TYPES = [ 'image' ];\nexport const MEDIA_ID_NO_FEATURED_IMAGE_SET = 0;\n","/**\n * Internal dependencies\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tLINK_DESTINATION_MEDIA_WP_CORE,\n\tLINK_DESTINATION_ATTACHMENT_WP_CORE,\n} from './constants';\nimport {\n\tLINK_DESTINATION_ATTACHMENT as IMAGE_LINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA as IMAGE_LINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE as IMAGE_LINK_DESTINATION_NONE,\n} from '../image/constants';\n\n/**\n * Determines new href and linkDestination values for an Image block from the\n * supplied Gallery link destination, or falls back to the Image blocks link.\n *\n * @param {Object} image              Gallery image.\n * @param {string} galleryDestination Gallery's selected link destination.\n * @param {Object} imageDestination   Image blocks attributes.\n * @return {Object}            New attributes to assign to image block.\n */\nexport function getHrefAndDestination(\n\timage,\n\tgalleryDestination,\n\timageDestination\n) {\n\t// Gutenberg and WordPress use different constants so if image_default_link_type\n\t// option is set we need to map from the WP Core values.\n\tswitch ( imageDestination ? imageDestination : galleryDestination ) {\n\t\tcase LINK_DESTINATION_MEDIA_WP_CORE:\n\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\treturn {\n\t\t\t\thref: image?.source_url || image?.url, // eslint-disable-line camelcase\n\t\t\t\tlinkDestination: IMAGE_LINK_DESTINATION_MEDIA,\n\t\t\t};\n\t\tcase LINK_DESTINATION_ATTACHMENT_WP_CORE:\n\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\treturn {\n\t\t\t\thref: image?.link,\n\t\t\t\tlinkDestination: IMAGE_LINK_DESTINATION_ATTACHMENT,\n\t\t\t};\n\t\tcase LINK_DESTINATION_NONE:\n\t\t\treturn {\n\t\t\t\thref: undefined,\n\t\t\t\tlinkDestination: IMAGE_LINK_DESTINATION_NONE,\n\t\t\t};\n\t}\n\n\treturn {};\n}\n","/**\n * External dependencies\n */\nimport { isEmpty, get } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { NEW_TAB_REL } from './constants';\n\nexport function removeNewTabRel( currentRel ) {\n\tlet newRel = currentRel;\n\n\tif ( currentRel !== undefined && ! isEmpty( newRel ) ) {\n\t\tif ( ! isEmpty( newRel ) ) {\n\t\t\tNEW_TAB_REL.forEach( ( relVal ) => {\n\t\t\t\tconst regExp = new RegExp( '\\\\b' + relVal + '\\\\b', 'gi' );\n\t\t\t\tnewRel = newRel.replace( regExp, '' );\n\t\t\t} );\n\n\t\t\t// Only trim if NEW_TAB_REL values was replaced.\n\t\t\tif ( newRel !== currentRel ) {\n\t\t\t\tnewRel = newRel.trim();\n\t\t\t}\n\n\t\t\tif ( isEmpty( newRel ) ) {\n\t\t\t\tnewRel = undefined;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newRel;\n}\n\n/**\n * Helper to get the link target settings to be stored.\n *\n * @param {boolean} value          The new link target value.\n * @param {Object}  attributes     Block attributes.\n * @param {Object}  attributes.rel Image block's rel attribute.\n *\n * @return {Object} Updated link target settings.\n */\nexport function getUpdatedLinkTargetSettings( value, { rel } ) {\n\tconst linkTarget = value ? '_blank' : undefined;\n\n\tlet updatedRel;\n\tif ( ! linkTarget && ! rel ) {\n\t\tupdatedRel = undefined;\n\t} else {\n\t\tupdatedRel = removeNewTabRel( rel );\n\t}\n\n\treturn {\n\t\tlinkTarget,\n\t\trel: updatedRel,\n\t};\n}\n\n/**\n * Determines new Image block attributes size selection.\n *\n * @param {Object} image Media file object for gallery image.\n * @param {string} size  Selected size slug to apply.\n */\nexport function getImageSizeAttributes( image, size ) {\n\tconst url = get( image, [ 'media_details', 'sizes', size, 'source_url' ] );\n\n\tif ( url ) {\n\t\treturn { url, width: undefined, height: undefined, sizeSlug: size };\n\t}\n\n\treturn {};\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseInnerBlocksProps,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { VisuallyHidden } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { View } from '@wordpress/primitives';\n\nconst allowedBlocks = [ 'core/image' ];\n\nexport const Gallery = ( props ) => {\n\tconst {\n\t\tattributes,\n\t\tisSelected,\n\t\tsetAttributes,\n\t\tmediaPlaceholder,\n\t\tinsertBlocksAfter,\n\t\tblockProps,\n\t} = props;\n\n\tconst { align, columns, caption, imageCrop } = attributes;\n\n\tconst { children, ...innerBlocksProps } = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks,\n\t\torientation: 'horizontal',\n\t\trenderAppender: false,\n\t\t__experimentalLayout: { type: 'default', alignments: [] },\n\t} );\n\n\treturn (\n\t\t<figure\n\t\t\t{ ...innerBlocksProps }\n\t\t\tclassName={ classnames(\n\t\t\t\tblockProps.className,\n\t\t\t\t'blocks-gallery-grid',\n\t\t\t\t{\n\t\t\t\t\t[ `align${ align }` ]: align,\n\t\t\t\t\t[ `columns-${ columns }` ]: columns !== undefined,\n\t\t\t\t\t[ `columns-default` ]: columns === undefined,\n\t\t\t\t\t'is-cropped': imageCrop,\n\t\t\t\t}\n\t\t\t) }\n\t\t>\n\t\t\t{ children }\n\t\t\t{ isSelected && ! children && (\n\t\t\t\t<View className=\"blocks-gallery-media-placeholder-wrapper\">\n\t\t\t\t\t{ mediaPlaceholder }\n\t\t\t\t</View>\n\t\t\t) }\n\t\t\t<RichTextVisibilityHelper\n\t\t\t\tisHidden={ ! isSelected && RichText.isEmpty( caption ) }\n\t\t\t\ttagName=\"figcaption\"\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'blocks-gallery-caption',\n\t\t\t\t\t__experimentalGetElementClassName( 'caption' )\n\t\t\t\t) }\n\t\t\t\taria-label={ __( 'Gallery caption text' ) }\n\t\t\t\tplaceholder={ __( 'Write gallery caption…' ) }\n\t\t\t\tvalue={ caption }\n\t\t\t\tonChange={ ( value ) => setAttributes( { caption: value } ) }\n\t\t\t\tinlineToolbar\n\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t\t}\n\t\t\t/>\n\t\t</figure>\n\t);\n};\n\nfunction RichTextVisibilityHelper( {\n\tisHidden,\n\tclassName,\n\tvalue,\n\tplaceholder,\n\ttagName,\n\tcaptionRef,\n\t...richTextProps\n} ) {\n\tif ( isHidden ) {\n\t\treturn <VisuallyHidden as={ RichText } { ...richTextProps } />;\n\t}\n\n\treturn (\n\t\t<RichText\n\t\t\tref={ captionRef }\n\t\t\tvalue={ value }\n\t\t\tplaceholder={ placeholder }\n\t\t\tclassName={ className }\n\t\t\ttagName={ tagName }\n\t\t\t{ ...richTextProps }\n\t\t/>\n\t);\n}\n\nexport default Gallery;\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\nconst EMPTY_IMAGE_MEDIA = [];\n\n/**\n * Retrieves the extended media info for each gallery image from the store. This is used to\n * determine which image size options are available for the current gallery.\n *\n * @param {Array} innerBlockImages An array of the innerBlock images currently in the gallery.\n *\n * @return {Array} An array of media info options for each gallery image.\n */\nexport default function useGetMedia( innerBlockImages ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst imageIds = innerBlockImages\n\t\t\t\t.map( ( imageBlock ) => imageBlock.attributes.id )\n\t\t\t\t.filter( ( id ) => id !== undefined );\n\n\t\t\tif ( imageIds.length === 0 ) {\n\t\t\t\treturn EMPTY_IMAGE_MEDIA;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\tselect( coreStore ).getMediaItems( {\n\t\t\t\t\tinclude: imageIds.join( ',' ),\n\t\t\t\t\tper_page: imageIds.length,\n\t\t\t\t\torderby: 'include',\n\t\t\t\t} ) ?? EMPTY_IMAGE_MEDIA\n\t\t\t);\n\t\t},\n\t\t[ innerBlockImages ]\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport {\n\tBlockList,\n\t__experimentalGetGapCSSValue as getGapCSSValue,\n} from '@wordpress/block-editor';\nimport { useContext, createPortal } from '@wordpress/element';\n\nexport default function GapStyles( { blockGap, clientId } ) {\n\tconst styleElement = useContext( BlockList.__unstableElementContext );\n\t// --gallery-block--gutter-size is deprecated. --wp--style--gallery-gap-default should be used by themes that want to set a default\n\t// gap on the gallery.\n\tconst fallbackValue = `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`;\n\tlet gapValue = fallbackValue;\n\tlet column = fallbackValue;\n\tlet row;\n\n\t// Check for the possibility of split block gap values. See: https://github.com/WordPress/gutenberg/pull/37736\n\tif ( !! blockGap ) {\n\t\trow =\n\t\t\ttypeof blockGap === 'string'\n\t\t\t\t? getGapCSSValue( blockGap )\n\t\t\t\t: getGapCSSValue( blockGap?.top ) || fallbackValue;\n\t\tcolumn =\n\t\t\ttypeof blockGap === 'string'\n\t\t\t\t? getGapCSSValue( blockGap )\n\t\t\t\t: getGapCSSValue( blockGap?.left ) || fallbackValue;\n\t\tgapValue = row === column ? row : `${ row } ${ column }`;\n\t}\n\n\t// The unstable gallery gap calculation requires a real value (such as `0px`) and not `0`.\n\tconst gap = `#block-${ clientId } {\n\t\t--wp--style--unstable-gallery-gap: ${ column === '0' ? '0px' : column };\n\t\tgap: ${ gapValue }\n\t}`;\n\n\tconst GapStyle = () => {\n\t\treturn <style>{ gap }</style>;\n\t};\n\n\treturn gap && styleElement\n\t\t? createPortal( <GapStyle />, styleElement )\n\t\t: null;\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { find } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport {\n\tBaseControl,\n\tPanelBody,\n\tSelectControl,\n\tToggleControl,\n\tRangeControl,\n\tSpinner,\n} from '@wordpress/components';\nimport {\n\tstore as blockEditorStore,\n\tMediaPlaceholder,\n\tInspectorControls,\n\tuseBlockProps,\n\tBlockControls,\n\tMediaReplaceFlow,\n} from '@wordpress/block-editor';\nimport { Platform, useEffect, useMemo } from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { withViewportMatch } from '@wordpress/viewport';\nimport { View } from '@wordpress/primitives';\nimport { createBlock } from '@wordpress/blocks';\nimport { createBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { sharedIcon } from './shared-icon';\nimport { defaultColumnsNumber, pickRelevantMediaFiles } from './shared';\nimport { getHrefAndDestination } from './utils';\nimport {\n\tgetUpdatedLinkTargetSettings,\n\tgetImageSizeAttributes,\n} from '../image/utils';\nimport Gallery from './gallery';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n} from './constants';\nimport useImageSizes from './use-image-sizes';\nimport useGetNewImages from './use-get-new-images';\nimport useGetMedia from './use-get-media';\nimport GapStyles from './gap-styles';\n\nconst MAX_COLUMNS = 8;\nconst linkOptions = [\n\t{ value: LINK_DESTINATION_ATTACHMENT, label: __( 'Attachment Page' ) },\n\t{ value: LINK_DESTINATION_MEDIA, label: __( 'Media File' ) },\n\t{\n\t\tvalue: LINK_DESTINATION_NONE,\n\t\tlabel: _x( 'None', 'Media item link option' ),\n\t},\n];\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nconst PLACEHOLDER_TEXT = Platform.isNative\n\t? __( 'ADD MEDIA' )\n\t: __( 'Drag images, upload new ones or select files from your library.' );\n\nconst MOBILE_CONTROL_PROPS_RANGE_CONTROL = Platform.isNative\n\t? { type: 'stepper' }\n\t: {};\n\nfunction GalleryEdit( props ) {\n\tconst {\n\t\tsetAttributes,\n\t\tattributes,\n\t\tclassName,\n\t\tclientId,\n\t\tisSelected,\n\t\tinsertBlocksAfter,\n\t} = props;\n\n\tconst { columns, imageCrop, linkTarget, linkTo, sizeSlug } = attributes;\n\n\tconst {\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\treplaceInnerBlocks,\n\t\tupdateBlockAttributes,\n\t\tselectBlock,\n\t\tclearSelectedBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst { getBlock, getSettings, preferredStyle } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\tconst preferredStyleVariations =\n\t\t\tsettings.__experimentalPreferredStyleVariations;\n\t\treturn {\n\t\t\tgetBlock: select( blockEditorStore ).getBlock,\n\t\t\tgetSettings: select( blockEditorStore ).getSettings,\n\t\t\tpreferredStyle: preferredStyleVariations?.value?.[ 'core/image' ],\n\t\t};\n\t}, [] );\n\n\tconst innerBlockImages = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( blockEditorStore ).getBlock( clientId )?.innerBlocks;\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst wasBlockJustInserted = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( blockEditorStore ).wasBlockJustInserted(\n\t\t\t\tclientId,\n\t\t\t\t'inserter_menu'\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst images = useMemo(\n\t\t() =>\n\t\t\tinnerBlockImages?.map( ( block ) => ( {\n\t\t\t\tclientId: block.clientId,\n\t\t\t\tid: block.attributes.id,\n\t\t\t\turl: block.attributes.url,\n\t\t\t\tattributes: block.attributes,\n\t\t\t\tfromSavedContent: Boolean( block.originalContent ),\n\t\t\t} ) ),\n\t\t[ innerBlockImages ]\n\t);\n\n\tconst imageData = useGetMedia( innerBlockImages );\n\n\tconst newImages = useGetNewImages( images, imageData );\n\n\tuseEffect( () => {\n\t\tnewImages?.forEach( ( newImage ) => {\n\t\t\t// Update the images data without creating new undo levels.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateBlockAttributes( newImage.clientId, {\n\t\t\t\t...buildImageAttributes( newImage.attributes ),\n\t\t\t\tid: newImage.id,\n\t\t\t\talign: undefined,\n\t\t\t} );\n\t\t} );\n\t\tif ( newImages?.length > 0 ) {\n\t\t\tclearSelectedBlock();\n\t\t}\n\t}, [ newImages ] );\n\n\tconst imageSizeOptions = useImageSizes(\n\t\timageData,\n\t\tisSelected,\n\t\tgetSettings\n\t);\n\n\t/**\n\t * Determines the image attributes that should be applied to an image block\n\t * after the gallery updates.\n\t *\n\t * The gallery will receive the full collection of images when a new image\n\t * is added. As a result we need to reapply the image's original settings if\n\t * it already existed in the gallery. If the image is in fact new, we need\n\t * to apply the gallery's current settings to the image.\n\t *\n\t * @param {Object} imageAttributes Media object for the actual image.\n\t * @return {Object}                Attributes to set on the new image block.\n\t */\n\tfunction buildImageAttributes( imageAttributes ) {\n\t\tconst image = imageAttributes.id\n\t\t\t? find( imageData, { id: imageAttributes.id } )\n\t\t\t: null;\n\n\t\tlet newClassName;\n\t\tif ( imageAttributes.className && imageAttributes.className !== '' ) {\n\t\t\tnewClassName = imageAttributes.className;\n\t\t} else {\n\t\t\tnewClassName = preferredStyle\n\t\t\t\t? `is-style-${ preferredStyle }`\n\t\t\t\t: undefined;\n\t\t}\n\n\t\tlet newLinkTarget;\n\t\tif ( imageAttributes.linkTarget || imageAttributes.rel ) {\n\t\t\t// When transformed from image blocks, the link destination and rel attributes are inherited.\n\t\t\tnewLinkTarget = {\n\t\t\t\tlinkTarget: imageAttributes.linkTarget,\n\t\t\t\trel: imageAttributes.rel,\n\t\t\t};\n\t\t} else {\n\t\t\t// When an image is added, update the link destination and rel attributes according to the gallery settings\n\t\t\tnewLinkTarget = getUpdatedLinkTargetSettings(\n\t\t\t\tlinkTarget,\n\t\t\t\tattributes\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t...pickRelevantMediaFiles( image, sizeSlug ),\n\t\t\t...getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tlinkTo,\n\t\t\t\timageAttributes?.linkDestination\n\t\t\t),\n\t\t\t...newLinkTarget,\n\t\t\tclassName: newClassName,\n\t\t\tsizeSlug,\n\t\t\tcaption: imageAttributes.caption || image.caption?.raw,\n\t\t\talt: imageAttributes.alt || image.alt_text,\n\t\t};\n\t}\n\n\tfunction isValidFileType( file ) {\n\t\treturn (\n\t\t\tALLOWED_MEDIA_TYPES.some(\n\t\t\t\t( mediaType ) => file.type?.indexOf( mediaType ) === 0\n\t\t\t) || file.url?.indexOf( 'blob:' ) === 0\n\t\t);\n\t}\n\n\tfunction updateImages( selectedImages ) {\n\t\tconst newFileUploads =\n\t\t\tObject.prototype.toString.call( selectedImages ) ===\n\t\t\t'[object FileList]';\n\n\t\tconst imageArray = newFileUploads\n\t\t\t? Array.from( selectedImages ).map( ( file ) => {\n\t\t\t\t\tif ( ! file.url ) {\n\t\t\t\t\t\treturn pickRelevantMediaFiles( {\n\t\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn file;\n\t\t\t  } )\n\t\t\t: selectedImages;\n\n\t\tif ( ! imageArray.every( isValidFileType ) ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\t__(\n\t\t\t\t\t'If uploading to a gallery all files need to be image formats'\n\t\t\t\t),\n\t\t\t\t{ id: 'gallery-upload-invalid-file', type: 'snackbar' }\n\t\t\t);\n\t\t}\n\n\t\tconst processedImages = imageArray\n\t\t\t.filter( ( file ) => file.url || isValidFileType( file ) )\n\t\t\t.map( ( file ) => {\n\t\t\t\tif ( ! file.url ) {\n\t\t\t\t\treturn pickRelevantMediaFiles( {\n\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\treturn file;\n\t\t\t} );\n\n\t\t// Because we are reusing existing innerImage blocks any reordering\n\t\t// done in the media library will be lost so we need to reapply that ordering\n\t\t// once the new image blocks are merged in with existing.\n\t\tconst newOrderMap = processedImages.reduce(\n\t\t\t( result, image, index ) => (\n\t\t\t\t( result[ image.id ] = index ), result\n\t\t\t),\n\t\t\t{}\n\t\t);\n\n\t\tconst existingImageBlocks = ! newFileUploads\n\t\t\t? innerBlockImages.filter( ( block ) =>\n\t\t\t\t\tprocessedImages.find(\n\t\t\t\t\t\t( img ) => img.id === block.attributes.id\n\t\t\t\t\t)\n\t\t\t  )\n\t\t\t: innerBlockImages;\n\n\t\tconst newImageList = processedImages.filter(\n\t\t\t( img ) =>\n\t\t\t\t! existingImageBlocks.find(\n\t\t\t\t\t( existingImg ) => img.id === existingImg.attributes.id\n\t\t\t\t)\n\t\t);\n\n\t\tconst newBlocks = newImageList.map( ( image ) => {\n\t\t\treturn createBlock( 'core/image', {\n\t\t\t\tid: image.id,\n\t\t\t\turl: image.url,\n\t\t\t\tcaption: image.caption,\n\t\t\t\talt: image.alt,\n\t\t\t} );\n\t\t} );\n\n\t\tif ( newBlocks?.length > 0 ) {\n\t\t\tselectBlock( newBlocks[ 0 ].clientId );\n\t\t}\n\n\t\treplaceInnerBlocks(\n\t\t\tclientId,\n\t\t\texistingImageBlocks\n\t\t\t\t.concat( newBlocks )\n\t\t\t\t.sort(\n\t\t\t\t\t( a, b ) =>\n\t\t\t\t\t\tnewOrderMap[ a.attributes.id ] -\n\t\t\t\t\t\tnewOrderMap[ b.attributes.id ]\n\t\t\t\t)\n\t\t);\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction setLinkTo( value ) {\n\t\tsetAttributes( { linkTo: value } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tconst image = block.attributes.id\n\t\t\t\t? find( imageData, { id: block.attributes.id } )\n\t\t\t\t: null;\n\t\t\tchangedAttributes[ block.clientId ] = getHrefAndDestination(\n\t\t\t\timage,\n\t\t\t\tvalue\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst linkToText = [ ...linkOptions ].find(\n\t\t\t( linkType ) => linkType.value === value\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: image size settings */\n\t\t\t\t__( 'All gallery image links updated to: %s' ),\n\t\t\t\tlinkToText.label\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-linkTo',\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t}\n\n\tfunction setColumnsNumber( value ) {\n\t\tsetAttributes( { columns: value } );\n\t}\n\n\tfunction toggleImageCrop() {\n\t\tsetAttributes( { imageCrop: ! imageCrop } );\n\t}\n\n\tfunction getImageCropHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Thumbnails are cropped to align.' )\n\t\t\t: __( 'Thumbnails are not cropped.' );\n\t}\n\n\tfunction toggleOpenInNewTab( openInNewTab ) {\n\t\tconst newLinkTarget = openInNewTab ? '_blank' : undefined;\n\t\tsetAttributes( { linkTarget: newLinkTarget } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tchangedAttributes[ block.clientId ] = getUpdatedLinkTargetSettings(\n\t\t\t\tnewLinkTarget,\n\t\t\t\tblock.attributes\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst noticeText = openInNewTab\n\t\t\t? __( 'All gallery images updated to open in new tab' )\n\t\t\t: __( 'All gallery images updated to not open in new tab' );\n\t\tcreateSuccessNotice( noticeText, {\n\t\t\tid: 'gallery-attributes-openInNewTab',\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}\n\n\tfunction updateImagesSize( newSizeSlug ) {\n\t\tsetAttributes( { sizeSlug: newSizeSlug } );\n\t\tconst changedAttributes = {};\n\t\tconst blocks = [];\n\t\tgetBlock( clientId ).innerBlocks.forEach( ( block ) => {\n\t\t\tblocks.push( block.clientId );\n\t\t\tconst image = block.attributes.id\n\t\t\t\t? find( imageData, { id: block.attributes.id } )\n\t\t\t\t: null;\n\t\t\tchangedAttributes[ block.clientId ] = getImageSizeAttributes(\n\t\t\t\timage,\n\t\t\t\tnewSizeSlug\n\t\t\t);\n\t\t} );\n\t\tupdateBlockAttributes( blocks, changedAttributes, true );\n\t\tconst imageSize = imageSizeOptions.find(\n\t\t\t( size ) => size.value === newSizeSlug\n\t\t);\n\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: image size settings */\n\t\t\t\t__( 'All gallery image sizes updated to: %s' ),\n\t\t\t\timageSize.label\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: 'gallery-attributes-sizeSlug',\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t}\n\n\tuseEffect( () => {\n\t\t// linkTo attribute must be saved so blocks don't break when changing image_default_link_type in options.php.\n\t\tif ( ! linkTo ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tlinkTo:\n\t\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t} );\n\t\t}\n\t}, [ linkTo ] );\n\n\tconst hasImages = !! images.length;\n\tconst hasImageIds = hasImages && images.some( ( image ) => !! image.id );\n\tconst imagesUploading = images.some( ( img ) =>\n\t\t! Platform.isNative\n\t\t\t? ! img.id && img.url?.indexOf( 'blob:' ) === 0\n\t\t\t: img.url?.indexOf( 'file:' ) === 0\n\t);\n\n\t// MediaPlaceholder props are different between web and native hence, we provide a platform-specific set.\n\tconst mediaPlaceholderProps = Platform.select( {\n\t\tweb: {\n\t\t\taddToGallery: false,\n\t\t\tdisableMediaButtons: imagesUploading,\n\t\t\tvalue: {},\n\t\t},\n\t\tnative: {\n\t\t\taddToGallery: hasImageIds,\n\t\t\tisAppender: hasImages,\n\t\t\tdisableMediaButtons:\n\t\t\t\t( hasImages && ! isSelected ) || imagesUploading,\n\t\t\tvalue: hasImageIds ? images : {},\n\t\t\tautoOpenMediaUpload:\n\t\t\t\t! hasImages && isSelected && wasBlockJustInserted,\n\t\t},\n\t} );\n\tconst mediaPlaceholder = (\n\t\t<MediaPlaceholder\n\t\t\thandleUpload={ false }\n\t\t\ticon={ sharedIcon }\n\t\t\tlabels={ {\n\t\t\t\ttitle: __( 'Gallery' ),\n\t\t\t\tinstructions: PLACEHOLDER_TEXT,\n\t\t\t} }\n\t\t\tonSelect={ updateImages }\n\t\t\taccept=\"image/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tmultiple\n\t\t\tonError={ onUploadError }\n\t\t\t{ ...mediaPlaceholderProps }\n\t\t/>\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( className, 'has-nested-images' ),\n\t} );\n\n\tif ( ! hasImages ) {\n\t\treturn <View { ...blockProps }>{ mediaPlaceholder }</View>;\n\t}\n\n\tconst hasLinkTo = linkTo && linkTo !== 'none';\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tcolumns\n\t\t\t\t\t\t\t\t\t? columns\n\t\t\t\t\t\t\t\t\t: defaultColumnsNumber( images.length )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={ Math.min( MAX_COLUMNS, images.length ) }\n\t\t\t\t\t\t\t{ ...MOBILE_CONTROL_PROPS_RANGE_CONTROL }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Crop images' ) }\n\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\thelp={ getImageCropHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Link to' ) }\n\t\t\t\t\t\tvalue={ linkTo }\n\t\t\t\t\t\tonChange={ setLinkTo }\n\t\t\t\t\t\toptions={ linkOptions }\n\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t/>\n\t\t\t\t\t{ hasLinkTo && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t\tonChange={ toggleOpenInNewTab }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ imageSizeOptions?.length > 0 && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Image size' ) }\n\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ Platform.isWeb && ! imageSizeOptions && hasImageIds && (\n\t\t\t\t\t\t<BaseControl className={ 'gallery-image-sizes' }>\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Image size' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<View className={ 'gallery-image-sizes__loading' }>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t\t{ __( 'Loading options…' ) }\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\thandleUpload={ false }\n\t\t\t\t\tonSelect={ updateImages }\n\t\t\t\t\tname={ __( 'Add' ) }\n\t\t\t\t\tmultiple={ true }\n\t\t\t\t\tmediaIds={ images\n\t\t\t\t\t\t.filter( ( image ) => image.id )\n\t\t\t\t\t\t.map( ( image ) => image.id ) }\n\t\t\t\t\taddToGallery={ hasImageIds }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ Platform.isWeb && (\n\t\t\t\t<GapStyles\n\t\t\t\t\tblockGap={ attributes.style?.spacing?.blockGap }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<Gallery\n\t\t\t\t{ ...props }\n\t\t\t\timages={ images }\n\t\t\t\tmediaPlaceholder={\n\t\t\t\t\t! hasImages || Platform.isNative\n\t\t\t\t\t\t? mediaPlaceholder\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tblockProps={ blockProps }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t/>\n\t\t</>\n\t);\n}\nexport default compose( [ withViewportMatch( { isNarrow: '< small' } ) ] )(\n\tGalleryEdit\n);\n","/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\n\n/**\n * Keeps track of images already in the gallery to allow new innerBlocks to be identified. This\n * is required so default gallery attributes can be applied without overwriting any custom\n * attributes applied to existing images.\n *\n * @param {Array} images    Basic image block data taken from current gallery innerBlock\n * @param {Array} imageData The related image data for each of the current gallery images.\n *\n * @return {Array} An array of any new images that have been added to the gallery.\n */\nexport default function useGetNewImages( images, imageData ) {\n\tconst [ currentImages, setCurrentImages ] = useState( [] );\n\n\treturn useMemo( () => getNewImages(), [ images, imageData ] );\n\n\tfunction getNewImages() {\n\t\tlet imagesUpdated = false;\n\n\t\t// First lets check if any images have been deleted.\n\t\tconst newCurrentImages = currentImages.filter( ( currentImg ) =>\n\t\t\timages.find( ( img ) => {\n\t\t\t\treturn currentImg.clientId === img.clientId;\n\t\t\t} )\n\t\t);\n\n\t\tif ( newCurrentImages.length < currentImages.length ) {\n\t\t\timagesUpdated = true;\n\t\t}\n\n\t\t// Now lets see if we have any images hydrated from saved content and if so\n\t\t// add them to currentImages state.\n\t\timages.forEach( ( image ) => {\n\t\t\tif (\n\t\t\t\timage.fromSavedContent &&\n\t\t\t\t! newCurrentImages.find(\n\t\t\t\t\t( currentImage ) => currentImage.id === image.id\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\timagesUpdated = true;\n\t\t\t\tnewCurrentImages.push( image );\n\t\t\t}\n\t\t} );\n\n\t\t// Now check for any new images that have been added to InnerBlocks and for which\n\t\t// we have the imageData we need for setting default block attributes.\n\t\tconst newImages = images.filter(\n\t\t\t( image ) =>\n\t\t\t\t! newCurrentImages.find(\n\t\t\t\t\t( currentImage ) =>\n\t\t\t\t\t\timage.clientId &&\n\t\t\t\t\t\tcurrentImage.clientId === image.clientId\n\t\t\t\t) &&\n\t\t\t\timageData?.find( ( img ) => img.id === image.id ) &&\n\t\t\t\t! image.fromSavedConent\n\t\t);\n\n\t\tif ( imagesUpdated || newImages?.length > 0 ) {\n\t\t\tsetCurrentImages( [ ...newCurrentImages, ...newImages ] );\n\t\t}\n\n\t\treturn newImages.length > 0 ? newImages : null;\n\t}\n}\n","/**\n * External dependencies\n */\nimport { get, some } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Calculates the image sizes that are avaible for the current gallery images in order to\n * populate the 'Image size' selector.\n *\n * @param {Array}    images      Basic image block data taken from current gallery innerBlock\n * @param {boolean}  isSelected  Is the block currently selected in the editor.\n * @param {Function} getSettings Block editor store selector.\n *\n * @return {Array} An array of image size options.\n */\nexport default function useImageSizes( images, isSelected, getSettings ) {\n\treturn useMemo( () => getImageSizing(), [ images, isSelected ] );\n\n\tfunction getImageSizing() {\n\t\tif ( ! images || images.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { imageSizes } = getSettings();\n\t\tlet resizedImages = {};\n\n\t\tif ( isSelected ) {\n\t\t\tresizedImages = images.reduce( ( currentResizedImages, img ) => {\n\t\t\t\tif ( ! img.id ) {\n\t\t\t\t\treturn currentResizedImages;\n\t\t\t\t}\n\n\t\t\t\tconst sizes = imageSizes.reduce( ( currentSizes, size ) => {\n\t\t\t\t\tconst defaultUrl = get( img, [\n\t\t\t\t\t\t'sizes',\n\t\t\t\t\t\tsize.slug,\n\t\t\t\t\t\t'url',\n\t\t\t\t\t] );\n\t\t\t\t\tconst mediaDetailsUrl = get( img, [\n\t\t\t\t\t\t'media_details',\n\t\t\t\t\t\t'sizes',\n\t\t\t\t\t\tsize.slug,\n\t\t\t\t\t\t'source_url',\n\t\t\t\t\t] );\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...currentSizes,\n\t\t\t\t\t\t[ size.slug ]: defaultUrl || mediaDetailsUrl,\n\t\t\t\t\t};\n\t\t\t\t}, {} );\n\t\t\t\treturn {\n\t\t\t\t\t...currentResizedImages,\n\t\t\t\t\t[ parseInt( img.id, 10 ) ]: sizes,\n\t\t\t\t};\n\t\t\t}, {} );\n\t\t}\n\t\treturn imageSizes\n\t\t\t.filter( ( { slug } ) =>\n\t\t\t\tsome( resizedImages, ( sizes ) => sizes[ slug ] )\n\t\t\t)\n\t\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\t}\n}\n","/**\n * External dependencies\n */\nimport { get, pick } from 'lodash';\n\nexport const pickRelevantMediaFiles = ( image, sizeSlug = 'large' ) => {\n\tconst imageProps = pick( image, [ 'alt', 'id', 'link', 'caption' ] );\n\timageProps.url =\n\t\tget( image, [ 'sizes', sizeSlug, 'url' ] ) ||\n\t\tget( image, [ 'media_details', 'sizes', sizeSlug, 'source_url' ] ) ||\n\t\timage.url;\n\tconst fullUrl =\n\t\tget( image, [ 'sizes', 'full', 'url' ] ) ||\n\t\tget( image, [ 'media_details', 'sizes', 'full', 'source_url' ] );\n\tif ( fullUrl ) {\n\t\timageProps.fullUrl = fullUrl;\n\t}\n\treturn imageProps;\n};\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst image = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v8.4l-3-2.9c-.3-.3-.8-.3-1 0L11.9 14 9 12c-.3-.2-.6-.2-.8 0l-3.6 2.6V5c-.1-.3.1-.5.4-.5zm14 15H5c-.3 0-.5-.2-.5-.5v-2.4l4.1-3 3 1.9c.3.2.7.2.9-.1L16 12l3.5 3.4V19c0 .3-.2.5-.5.5z\" />\n\t</SVG>\n);\n\nexport default image;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst chevronLeft = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z\" />\n\t</SVG>\n);\n\nexport default chevronLeft;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst chevronRight = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z\" />\n\t</SVG>\n);\n\nexport default chevronRight;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst closeSmall = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z\" />\n\t</SVG>\n);\n\nexport default closeSmall;\n","export const LINK_DESTINATION_NONE = 'none';\nexport const LINK_DESTINATION_MEDIA = 'file';\nexport const LINK_DESTINATION_ATTACHMENT = 'post';\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { Button, Spinner, ButtonGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport {\n\tRichText,\n\tMediaPlaceholder,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { isBlobURL } from '@wordpress/blob';\nimport { compose } from '@wordpress/compose';\nimport {\n\tcloseSmall,\n\tchevronLeft,\n\tchevronRight,\n\tedit,\n\timage as imageIcon,\n} from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { pickRelevantMediaFiles } from './shared';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n} from './constants';\n\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\nclass GalleryImage extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onSelectImage = this.onSelectImage.bind( this );\n\t\tthis.onRemoveImage = this.onRemoveImage.bind( this );\n\t\tthis.bindContainer = this.bindContainer.bind( this );\n\t\tthis.onEdit = this.onEdit.bind( this );\n\t\tthis.onSelectImageFromLibrary =\n\t\t\tthis.onSelectImageFromLibrary.bind( this );\n\t\tthis.onSelectCustomURL = this.onSelectCustomURL.bind( this );\n\t\tthis.state = {\n\t\t\tisEditing: false,\n\t\t};\n\t}\n\n\tbindContainer( ref ) {\n\t\tthis.container = ref;\n\t}\n\n\tonSelectImage() {\n\t\tif ( ! this.props.isSelected ) {\n\t\t\tthis.props.onSelect();\n\t\t}\n\t}\n\n\tonRemoveImage( event ) {\n\t\tif (\n\t\t\tthis.container === this.container.ownerDocument.activeElement &&\n\t\t\tthis.props.isSelected &&\n\t\t\t[ BACKSPACE, DELETE ].indexOf( event.keyCode ) !== -1\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.props.onRemove();\n\t\t}\n\t}\n\n\tonEdit() {\n\t\tthis.setState( {\n\t\t\tisEditing: true,\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\t\tconst { image, url, __unstableMarkNextChangeAsNotPersistent } =\n\t\t\tthis.props;\n\t\tif ( image && ! url ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tthis.props.setAttributes( {\n\t\t\t\turl: image.source_url,\n\t\t\t\talt: image.alt_text,\n\t\t\t} );\n\t\t}\n\t}\n\n\tdeselectOnBlur() {\n\t\tthis.props.onDeselect();\n\t}\n\n\tonSelectImageFromLibrary( media ) {\n\t\tconst { setAttributes, id, url, alt, caption, sizeSlug } = this.props;\n\t\tif ( ! media || ! media.url ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, sizeSlug );\n\n\t\t// If the current image is temporary but an alt text was meanwhile\n\t\t// written by the user, make sure the text is not overwritten.\n\t\tif ( isTemporaryImage( id, url ) ) {\n\t\t\tif ( alt ) {\n\t\t\t\tconst { alt: omittedAlt, ...restMediaAttributes } =\n\t\t\t\t\tmediaAttributes;\n\t\t\t\tmediaAttributes = restMediaAttributes;\n\t\t\t}\n\t\t}\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( caption && ! get( mediaAttributes, [ 'caption' ] ) ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tsetAttributes( mediaAttributes );\n\t\tthis.setState( {\n\t\t\tisEditing: false,\n\t\t} );\n\t}\n\n\tonSelectCustomURL( newURL ) {\n\t\tconst { setAttributes, url } = this.props;\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t} );\n\t\t\tthis.setState( {\n\t\t\t\tisEditing: false,\n\t\t\t} );\n\t\t}\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\turl,\n\t\t\talt,\n\t\t\tid,\n\t\t\tlinkTo,\n\t\t\tlink,\n\t\t\tisFirstItem,\n\t\t\tisLastItem,\n\t\t\tisSelected,\n\t\t\tcaption,\n\t\t\tonRemove,\n\t\t\tonMoveForward,\n\t\t\tonMoveBackward,\n\t\t\tsetAttributes,\n\t\t\t'aria-label': ariaLabel,\n\t\t} = this.props;\n\t\tconst { isEditing } = this.state;\n\n\t\tlet href;\n\n\t\tswitch ( linkTo ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = link;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst img = (\n\t\t\t// Disable reason: Image itself is not meant to be interactive, but should\n\t\t\t// direct image selection and unfocus caption fields.\n\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t<>\n\t\t\t\t<img\n\t\t\t\t\tsrc={ url }\n\t\t\t\t\talt={ alt }\n\t\t\t\t\tdata-id={ id }\n\t\t\t\t\tonKeyDown={ this.onRemoveImage }\n\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\tref={ this.bindContainer }\n\t\t\t\t/>\n\t\t\t\t{ isBlobURL( url ) && <Spinner /> }\n\t\t\t</>\n\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions */\n\t\t);\n\n\t\tconst className = classnames( {\n\t\t\t'is-selected': isSelected,\n\t\t\t'is-transient': isBlobURL( url ),\n\t\t} );\n\n\t\treturn (\n\t\t\t// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions\n\t\t\t<figure\n\t\t\t\tclassName={ className }\n\t\t\t\tonClick={ this.onSelectImage }\n\t\t\t\tonFocus={ this.onSelectImage }\n\t\t\t>\n\t\t\t\t{ ! isEditing && ( href ? <a href={ href }>{ img }</a> : img ) }\n\t\t\t\t{ isEditing && (\n\t\t\t\t\t<MediaPlaceholder\n\t\t\t\t\t\tlabels={ { title: __( 'Edit gallery image' ) } }\n\t\t\t\t\t\ticon={ imageIcon }\n\t\t\t\t\t\tonSelect={ this.onSelectImageFromLibrary }\n\t\t\t\t\t\tonSelectURL={ this.onSelectCustomURL }\n\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\tallowedTypes={ [ 'image' ] }\n\t\t\t\t\t\tvalue={ { id, src: url } }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<ButtonGroup className=\"block-library-gallery-item__inline-menu is-left\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ chevronLeft }\n\t\t\t\t\t\tonClick={ isFirstItem ? undefined : onMoveBackward }\n\t\t\t\t\t\tlabel={ __( 'Move image backward' ) }\n\t\t\t\t\t\taria-disabled={ isFirstItem }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ chevronRight }\n\t\t\t\t\t\tonClick={ isLastItem ? undefined : onMoveForward }\n\t\t\t\t\t\tlabel={ __( 'Move image forward' ) }\n\t\t\t\t\t\taria-disabled={ isLastItem }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t</ButtonGroup>\n\t\t\t\t<ButtonGroup className=\"block-library-gallery-item__inline-menu is-right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\tonClick={ this.onEdit }\n\t\t\t\t\t\tlabel={ __( 'Replace image' ) }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tonClick={ onRemove }\n\t\t\t\t\t\tlabel={ __( 'Remove image' ) }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t</ButtonGroup>\n\t\t\t\t{ ! isEditing && ( isSelected || caption ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tclassName={ __experimentalGetElementClassName(\n\t\t\t\t\t\t\t'caption'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\taria-label={ __( 'Image caption text' ) }\n\t\t\t\t\t\tplaceholder={ isSelected ? __( 'Add caption' ) : null }\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tonChange={ ( newCaption ) =>\n\t\t\t\t\t\t\tsetAttributes( { caption: newCaption } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinlineToolbar\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</figure>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, ownProps ) => {\n\t\tconst { getMedia } = select( coreStore );\n\t\tconst { id } = ownProps;\n\n\t\treturn {\n\t\t\timage: id ? getMedia( parseInt( id, 10 ) ) : null,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\t\tdispatch( blockEditorStore );\n\t\treturn {\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t};\n\t} ),\n] )( GalleryImage );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { VisuallyHidden } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport GalleryImage from './gallery-image';\nimport { defaultColumnsNumberV1 } from '../deprecated';\n\nexport const Gallery = ( props ) => {\n\tconst {\n\t\tattributes,\n\t\tisSelected,\n\t\tsetAttributes,\n\t\tselectedImage,\n\t\tmediaPlaceholder,\n\t\tonMoveBackward,\n\t\tonMoveForward,\n\t\tonRemoveImage,\n\t\tonSelectImage,\n\t\tonDeselectImage,\n\t\tonSetImageAttributes,\n\t\tinsertBlocksAfter,\n\t\tblockProps,\n\t} = props;\n\n\tconst {\n\t\talign,\n\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\tcaption,\n\t\timageCrop,\n\t\timages,\n\t} = attributes;\n\n\treturn (\n\t\t<figure\n\t\t\t{ ...blockProps }\n\t\t\tclassName={ classnames( blockProps.className, {\n\t\t\t\t[ `align${ align }` ]: align,\n\t\t\t\t[ `columns-${ columns }` ]: columns,\n\t\t\t\t'is-cropped': imageCrop,\n\t\t\t} ) }\n\t\t>\n\t\t\t<ul className=\"blocks-gallery-grid\">\n\t\t\t\t{ images.map( ( img, index ) => {\n\t\t\t\t\tconst ariaLabel = sprintf(\n\t\t\t\t\t\t/* translators: 1: the order number of the image. 2: the total number of images. */\n\t\t\t\t\t\t__( 'image %1$d of %2$d in gallery' ),\n\t\t\t\t\t\tindex + 1,\n\t\t\t\t\t\timages.length\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tclassName=\"blocks-gallery-item\"\n\t\t\t\t\t\t\tkey={ img.id ? `${ img.id }-${ index }` : img.url }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<GalleryImage\n\t\t\t\t\t\t\t\turl={ img.url }\n\t\t\t\t\t\t\t\talt={ img.alt }\n\t\t\t\t\t\t\t\tid={ img.id }\n\t\t\t\t\t\t\t\tisFirstItem={ index === 0 }\n\t\t\t\t\t\t\t\tisLastItem={ index + 1 === images.length }\n\t\t\t\t\t\t\t\tisSelected={\n\t\t\t\t\t\t\t\t\tisSelected && selectedImage === index\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonMoveBackward={ onMoveBackward( index ) }\n\t\t\t\t\t\t\t\tonMoveForward={ onMoveForward( index ) }\n\t\t\t\t\t\t\t\tonRemove={ onRemoveImage( index ) }\n\t\t\t\t\t\t\t\tonSelect={ onSelectImage( index ) }\n\t\t\t\t\t\t\t\tonDeselect={ onDeselectImage( index ) }\n\t\t\t\t\t\t\t\tsetAttributes={ ( attrs ) =>\n\t\t\t\t\t\t\t\t\tonSetImageAttributes( index, attrs )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcaption={ img.caption }\n\t\t\t\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\t\t\t\tsizeSlug={ attributes.sizeSlug }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</ul>\n\t\t\t{ mediaPlaceholder }\n\t\t\t<RichTextVisibilityHelper\n\t\t\t\tisHidden={ ! isSelected && RichText.isEmpty( caption ) }\n\t\t\t\ttagName=\"figcaption\"\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'blocks-gallery-caption',\n\t\t\t\t\t__experimentalGetElementClassName( 'caption' )\n\t\t\t\t) }\n\t\t\t\taria-label={ __( 'Gallery caption text' ) }\n\t\t\t\tplaceholder={ __( 'Write gallery caption…' ) }\n\t\t\t\tvalue={ caption }\n\t\t\t\tonChange={ ( value ) => setAttributes( { caption: value } ) }\n\t\t\t\tinlineToolbar\n\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t\t}\n\t\t\t/>\n\t\t</figure>\n\t);\n};\n\nfunction RichTextVisibilityHelper( { isHidden, ...richTextProps } ) {\n\treturn isHidden ? (\n\t\t<VisuallyHidden as={ RichText } { ...richTextProps } />\n\t) : (\n\t\t<RichText { ...richTextProps } />\n\t);\n}\n\nexport default Gallery;\n","/**\n * External dependencies\n */\nimport { every, filter, find, get, isEmpty, map, reduce, some } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport {\n\tPanelBody,\n\tSelectControl,\n\tToggleControl,\n\twithNotices,\n\tRangeControl,\n} from '@wordpress/components';\nimport {\n\tMediaPlaceholder,\n\tInspectorControls,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { Platform, useEffect, useState, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { withViewportMatch } from '@wordpress/viewport';\nimport { View } from '@wordpress/primitives';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { sharedIcon } from '../shared-icon';\nimport { pickRelevantMediaFiles } from './shared';\nimport { defaultColumnsNumberV1 } from '../deprecated';\nimport Gallery from './gallery';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n} from './constants';\n\nconst MAX_COLUMNS = 8;\nconst linkOptions = [\n\t{ value: LINK_DESTINATION_ATTACHMENT, label: __( 'Attachment Page' ) },\n\t{ value: LINK_DESTINATION_MEDIA, label: __( 'Media File' ) },\n\t{ value: LINK_DESTINATION_NONE, label: __( 'None' ) },\n];\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nconst PLACEHOLDER_TEXT = Platform.select( {\n\tweb: __(\n\t\t'Drag images, upload new ones or select files from your library.'\n\t),\n\tnative: __( 'ADD MEDIA' ),\n} );\n\nconst MOBILE_CONTROL_PROPS_RANGE_CONTROL = Platform.select( {\n\tweb: {},\n\tnative: { type: 'stepper' },\n} );\n\nfunction GalleryEdit( props ) {\n\tconst {\n\t\tattributes,\n\t\tclientId,\n\t\tisSelected,\n\t\tnoticeUI,\n\t\tnoticeOperations,\n\t\tonFocus,\n\t} = props;\n\tconst {\n\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\timageCrop,\n\t\timages,\n\t\tlinkTo,\n\t\tsizeSlug,\n\t} = attributes;\n\tconst [ selectedImage, setSelectedImage ] = useState();\n\tconst [ attachmentCaptions, setAttachmentCaptions ] = useState();\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst { imageSizes, mediaUpload, getMedia, wasBlockJustInserted } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\n\t\t\treturn {\n\t\t\t\timageSizes: settings.imageSizes,\n\t\t\t\tmediaUpload: settings.mediaUpload,\n\t\t\t\tgetMedia: select( coreStore ).getMedia,\n\t\t\t\twasBlockJustInserted: select(\n\t\t\t\t\tblockEditorStore\n\t\t\t\t).wasBlockJustInserted( clientId, 'inserter_menu' ),\n\t\t\t};\n\t\t} );\n\n\tconst resizedImages = useMemo( () => {\n\t\tif ( isSelected ) {\n\t\t\treturn reduce(\n\t\t\t\tattributes.ids,\n\t\t\t\t( currentResizedImages, id ) => {\n\t\t\t\t\tif ( ! id ) {\n\t\t\t\t\t\treturn currentResizedImages;\n\t\t\t\t\t}\n\t\t\t\t\tconst image = getMedia( id );\n\t\t\t\t\tconst sizes = reduce(\n\t\t\t\t\t\timageSizes,\n\t\t\t\t\t\t( currentSizes, size ) => {\n\t\t\t\t\t\t\tconst defaultUrl = get( image, [\n\t\t\t\t\t\t\t\t'sizes',\n\t\t\t\t\t\t\t\tsize.slug,\n\t\t\t\t\t\t\t\t'url',\n\t\t\t\t\t\t\t] );\n\t\t\t\t\t\t\tconst mediaDetailsUrl = get( image, [\n\t\t\t\t\t\t\t\t'media_details',\n\t\t\t\t\t\t\t\t'sizes',\n\t\t\t\t\t\t\t\tsize.slug,\n\t\t\t\t\t\t\t\t'source_url',\n\t\t\t\t\t\t\t] );\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...currentSizes,\n\t\t\t\t\t\t\t\t[ size.slug ]: defaultUrl || mediaDetailsUrl,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{}\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...currentResizedImages,\n\t\t\t\t\t\t[ parseInt( id, 10 ) ]: sizes,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t}\n\t\treturn {};\n\t}, [ isSelected, attributes.ids, imageSizes ] );\n\n\tfunction onFocusGalleryCaption() {\n\t\tsetSelectedImage();\n\t}\n\n\tfunction setAttributes( newAttrs ) {\n\t\tif ( newAttrs.ids ) {\n\t\t\tthrow new Error(\n\t\t\t\t'The \"ids\" attribute should not be changed directly. It is managed automatically when \"images\" attribute changes'\n\t\t\t);\n\t\t}\n\n\t\tif ( newAttrs.images ) {\n\t\t\tnewAttrs = {\n\t\t\t\t...newAttrs,\n\t\t\t\t// Unlike images[ n ].id which is a string, always ensure the\n\t\t\t\t// ids array contains numbers as per its attribute type.\n\t\t\t\tids: map( newAttrs.images, ( { id } ) => parseInt( id, 10 ) ),\n\t\t\t};\n\t\t}\n\n\t\tprops.setAttributes( newAttrs );\n\t}\n\n\tfunction onSelectImage( index ) {\n\t\treturn () => {\n\t\t\tsetSelectedImage( index );\n\t\t};\n\t}\n\n\tfunction onDeselectImage() {\n\t\treturn () => {\n\t\t\tsetSelectedImage();\n\t\t};\n\t}\n\n\tfunction onMove( oldIndex, newIndex ) {\n\t\tconst newImages = [ ...images ];\n\t\tnewImages.splice( newIndex, 1, images[ oldIndex ] );\n\t\tnewImages.splice( oldIndex, 1, images[ newIndex ] );\n\t\tsetSelectedImage( newIndex );\n\t\tsetAttributes( { images: newImages } );\n\t}\n\n\tfunction onMoveForward( oldIndex ) {\n\t\treturn () => {\n\t\t\tif ( oldIndex === images.length - 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonMove( oldIndex, oldIndex + 1 );\n\t\t};\n\t}\n\n\tfunction onMoveBackward( oldIndex ) {\n\t\treturn () => {\n\t\t\tif ( oldIndex === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonMove( oldIndex, oldIndex - 1 );\n\t\t};\n\t}\n\n\tfunction onRemoveImage( index ) {\n\t\treturn () => {\n\t\t\tconst newImages = filter( images, ( img, i ) => index !== i );\n\t\t\tsetSelectedImage();\n\t\t\tsetAttributes( {\n\t\t\t\timages: newImages,\n\t\t\t\tcolumns: attributes.columns\n\t\t\t\t\t? Math.min( newImages.length, attributes.columns )\n\t\t\t\t\t: attributes.columns,\n\t\t\t} );\n\t\t};\n\t}\n\n\tfunction selectCaption( newImage ) {\n\t\t// The image id in both the images and attachmentCaptions arrays is a\n\t\t// string, so ensure comparison works correctly by converting the\n\t\t// newImage.id to a string.\n\t\tconst newImageId = newImage.id.toString();\n\t\tconst currentImage = find( images, { id: newImageId } );\n\t\tconst currentImageCaption = currentImage\n\t\t\t? currentImage.caption\n\t\t\t: newImage.caption;\n\n\t\tif ( ! attachmentCaptions ) {\n\t\t\treturn currentImageCaption;\n\t\t}\n\n\t\tconst attachment = find( attachmentCaptions, {\n\t\t\tid: newImageId,\n\t\t} );\n\n\t\t// If the attachment caption is updated.\n\t\tif ( attachment && attachment.caption !== newImage.caption ) {\n\t\t\treturn newImage.caption;\n\t\t}\n\n\t\treturn currentImageCaption;\n\t}\n\n\tfunction onSelectImages( newImages ) {\n\t\tsetAttachmentCaptions(\n\t\t\tnewImages.map( ( newImage ) => ( {\n\t\t\t\t// Store the attachmentCaption id as a string for consistency\n\t\t\t\t// with the type of the id in the images attribute.\n\t\t\t\tid: newImage.id.toString(),\n\t\t\t\tcaption: newImage.caption,\n\t\t\t} ) )\n\t\t);\n\t\tsetAttributes( {\n\t\t\timages: newImages.map( ( newImage ) => ( {\n\t\t\t\t...pickRelevantMediaFiles( newImage, sizeSlug ),\n\t\t\t\tcaption: selectCaption( newImage, images, attachmentCaptions ),\n\t\t\t\t// The id value is stored in a data attribute, so when the\n\t\t\t\t// block is parsed it's converted to a string. Converting\n\t\t\t\t// to a string here ensures it's type is consistent.\n\t\t\t\tid: newImage.id.toString(),\n\t\t\t} ) ),\n\t\t\tcolumns: attributes.columns\n\t\t\t\t? Math.min( newImages.length, attributes.columns )\n\t\t\t\t: attributes.columns,\n\t\t} );\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tnoticeOperations.removeAllNotices();\n\t\tnoticeOperations.createErrorNotice( message );\n\t}\n\n\tfunction setLinkTo( value ) {\n\t\tsetAttributes( { linkTo: value } );\n\t}\n\n\tfunction setColumnsNumber( value ) {\n\t\tsetAttributes( { columns: value } );\n\t}\n\n\tfunction toggleImageCrop() {\n\t\tsetAttributes( { imageCrop: ! imageCrop } );\n\t}\n\n\tfunction getImageCropHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Thumbnails are cropped to align.' )\n\t\t\t: __( 'Thumbnails are not cropped.' );\n\t}\n\n\tfunction setImageAttributes( index, newAttributes ) {\n\t\tif ( ! images[ index ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\timages: [\n\t\t\t\t...images.slice( 0, index ),\n\t\t\t\t{\n\t\t\t\t\t...images[ index ],\n\t\t\t\t\t...newAttributes,\n\t\t\t\t},\n\t\t\t\t...images.slice( index + 1 ),\n\t\t\t],\n\t\t} );\n\t}\n\n\tfunction getImagesSizeOptions() {\n\t\treturn map(\n\t\t\tfilter( imageSizes, ( { slug } ) =>\n\t\t\t\tsome( resizedImages, ( sizes ) => sizes[ slug ] )\n\t\t\t),\n\t\t\t( { name, slug } ) => ( { value: slug, label: name } )\n\t\t);\n\t}\n\n\tfunction updateImagesSize( newSizeSlug ) {\n\t\tconst updatedImages = map( images, ( image ) => {\n\t\t\tif ( ! image.id ) {\n\t\t\t\treturn image;\n\t\t\t}\n\t\t\tconst url = get( resizedImages, [\n\t\t\t\tparseInt( image.id, 10 ),\n\t\t\t\tnewSizeSlug,\n\t\t\t] );\n\t\t\treturn {\n\t\t\t\t...image,\n\t\t\t\t...( url && { url } ),\n\t\t\t};\n\t\t} );\n\n\t\tsetAttributes( { images: updatedImages, sizeSlug: newSizeSlug } );\n\t}\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tPlatform.OS === 'web' &&\n\t\t\timages &&\n\t\t\timages.length > 0 &&\n\t\t\tevery( images, ( { url } ) => isBlobURL( url ) )\n\t\t) {\n\t\t\tconst filesList = map( images, ( { url } ) => getBlobByURL( url ) );\n\t\t\timages.forEach( ( { url } ) => revokeBlobURL( url ) );\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList,\n\t\t\t\tonFileChange: onSelectImages,\n\t\t\t\tallowedTypes: [ 'image' ],\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\t// Deselect images when deselecting the block.\n\t\tif ( ! isSelected ) {\n\t\t\tsetSelectedImage();\n\t\t}\n\t}, [ isSelected ] );\n\n\tuseEffect( () => {\n\t\t// linkTo attribute must be saved so blocks don't break when changing\n\t\t// image_default_link_type in options.php.\n\t\tif ( ! linkTo ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tlinkTo:\n\t\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t} );\n\t\t}\n\t}, [ linkTo ] );\n\n\tconst hasImages = !! images.length;\n\tconst hasImageIds = hasImages && images.some( ( image ) => !! image.id );\n\n\tconst mediaPlaceholder = (\n\t\t<MediaPlaceholder\n\t\t\taddToGallery={ hasImageIds }\n\t\t\tisAppender={ hasImages }\n\t\t\tdisableMediaButtons={ hasImages && ! isSelected }\n\t\t\ticon={ ! hasImages && sharedIcon }\n\t\t\tlabels={ {\n\t\t\t\ttitle: ! hasImages && __( 'Gallery' ),\n\t\t\t\tinstructions: ! hasImages && PLACEHOLDER_TEXT,\n\t\t\t} }\n\t\t\tonSelect={ onSelectImages }\n\t\t\taccept=\"image/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tmultiple\n\t\t\tvalue={ hasImageIds ? images : {} }\n\t\t\tonError={ onUploadError }\n\t\t\tnotices={ hasImages ? undefined : noticeUI }\n\t\t\tonFocus={ onFocus }\n\t\t\tautoOpenMediaUpload={\n\t\t\t\t! hasImages && isSelected && wasBlockJustInserted\n\t\t\t}\n\t\t/>\n\t);\n\n\tconst blockProps = useBlockProps();\n\n\tif ( ! hasImages ) {\n\t\treturn <View { ...blockProps }>{ mediaPlaceholder }</View>;\n\t}\n\n\tconst imageSizeOptions = getImagesSizeOptions();\n\tconst shouldShowSizeOptions = hasImages && ! isEmpty( imageSizeOptions );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\tvalue={ columns }\n\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={ Math.min( MAX_COLUMNS, images.length ) }\n\t\t\t\t\t\t\t{ ...MOBILE_CONTROL_PROPS_RANGE_CONTROL }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Crop images' ) }\n\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\thelp={ getImageCropHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Link to' ) }\n\t\t\t\t\t\tvalue={ linkTo }\n\t\t\t\t\t\tonChange={ setLinkTo }\n\t\t\t\t\t\toptions={ linkOptions }\n\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t/>\n\t\t\t\t\t{ shouldShowSizeOptions && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Image size' ) }\n\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ noticeUI }\n\t\t\t<Gallery\n\t\t\t\t{ ...props }\n\t\t\t\tselectedImage={ selectedImage }\n\t\t\t\tmediaPlaceholder={ mediaPlaceholder }\n\t\t\t\tonMoveBackward={ onMoveBackward }\n\t\t\t\tonMoveForward={ onMoveForward }\n\t\t\t\tonRemoveImage={ onRemoveImage }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonDeselectImage={ onDeselectImage }\n\t\t\t\tonSetImageAttributes={ setImageAttributes }\n\t\t\t\tblockProps={ blockProps }\n\t\t\t\t// This prop is used by gallery.native.js.\n\t\t\t\tonFocusGalleryCaption={ onFocusGalleryCaption }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default compose( [\n\twithNotices,\n\twithViewportMatch( { isNarrow: '< small' } ),\n] )( GalleryEdit );\n","/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport { withNotices } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport EditWithInnerBlocks from './edit';\nimport EditWithoutInnerBlocks from './v1/edit';\nimport { isGalleryV2Enabled } from './shared';\n\n/*\n * Using a wrapper around the logic to load the edit for v1 of Gallery block\n * or the refactored version with InnerBlocks. This is to prevent conditional\n * use of hooks lint errors if adding this logic to the top of the edit component.\n */\nfunction GalleryEditWrapper( props ) {\n\tif ( ! isGalleryV2Enabled() ) {\n\t\treturn <EditWithoutInnerBlocks { ...props } />;\n\t}\n\n\treturn <EditWithInnerBlocks { ...props } />;\n}\n\nexport default compose( [ withNotices ] )( GalleryEditWrapper );\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"hooks\"];","/**\n * External dependencies\n */\nimport { filter, every } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { createBlobURL } from '@wordpress/blob';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_NONE,\n\tLINK_DESTINATION_MEDIA,\n} from './constants';\nimport {\n\tLINK_DESTINATION_ATTACHMENT as DEPRECATED_LINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA as DEPRECATED_LINK_DESTINATION_MEDIA,\n} from './v1/constants';\nimport { pickRelevantMediaFiles, isGalleryV2Enabled } from './shared';\n\nconst parseShortcodeIds = ( ids ) => {\n\tif ( ! ids ) {\n\t\treturn [];\n\t}\n\n\treturn ids.split( ',' ).map( ( id ) => parseInt( id, 10 ) );\n};\n\n/**\n * Third party block plugins don't have an easy way to detect if the\n * innerBlocks version of the Gallery is running when they run a\n * 3rdPartyBlock -> GalleryBlock transform so this tranform filter\n * will handle this. Once the innerBlocks version is the default\n * in a core release, this could be deprecated and removed after\n * plugin authors have been given time to update transforms.\n *\n * @typedef  {Object} Attributes\n * @typedef  {Object} Block\n * @property {Attributes} attributes The attributes of the block.\n * @param    {Block}      block      The transformed block.\n * @return   {Block}                 The transformed block.\n */\nfunction updateThirdPartyTransformToGallery( block ) {\n\tif (\n\t\tisGalleryV2Enabled() &&\n\t\tblock.name === 'core/gallery' &&\n\t\tblock.attributes?.images.length > 0\n\t) {\n\t\tconst innerBlocks = block.attributes.images.map(\n\t\t\t( { url, id, alt } ) => {\n\t\t\t\treturn createBlock( 'core/image', {\n\t\t\t\t\turl,\n\t\t\t\t\tid: id ? parseInt( id, 10 ) : null,\n\t\t\t\t\talt,\n\t\t\t\t\tsizeSlug: block.attributes.sizeSlug,\n\t\t\t\t\tlinkDestination: block.attributes.linkDestination,\n\t\t\t\t} );\n\t\t\t}\n\t\t);\n\n\t\tdelete block.attributes.ids;\n\t\tdelete block.attributes.images;\n\t\tblock.innerBlocks = innerBlocks;\n\t}\n\n\treturn block;\n}\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/gallery/update-third-party-transform-to',\n\tupdateThirdPartyTransformToGallery\n);\n\n/**\n * Third party block plugins don't have an easy way to detect if the\n * innerBlocks version of the Gallery is running when they run a\n * GalleryBlock -> 3rdPartyBlock transform so this transform filter\n * will handle this. Once the innerBlocks version is the default\n * in a core release, this could be deprecated and removed after\n * plugin authors have been given time to update transforms.\n *\n * @typedef  {Object} Attributes\n * @typedef  {Object} Block\n * @property {Attributes} attributes The attributes of the block.\n * @param    {Block}      toBlock    The block to transform to.\n * @param    {Block[]}    fromBlocks The blocks to transform from.\n * @return   {Block}                 The transformed block.\n */\nfunction updateThirdPartyTransformFromGallery( toBlock, fromBlocks ) {\n\tconst from = Array.isArray( fromBlocks ) ? fromBlocks : [ fromBlocks ];\n\tconst galleryBlock = from.find(\n\t\t( transformedBlock ) =>\n\t\t\ttransformedBlock.name === 'core/gallery' &&\n\t\t\ttransformedBlock.innerBlocks.length > 0 &&\n\t\t\t! transformedBlock.attributes.images?.length > 0 &&\n\t\t\t! toBlock.name.includes( 'core/' )\n\t);\n\n\tif ( galleryBlock ) {\n\t\tconst images = galleryBlock.innerBlocks.map(\n\t\t\t( { attributes: { url, id, alt } } ) => ( {\n\t\t\t\turl,\n\t\t\t\tid: id ? parseInt( id, 10 ) : null,\n\t\t\t\talt,\n\t\t\t} )\n\t\t);\n\t\tconst ids = images.map( ( { id } ) => id );\n\t\tgalleryBlock.attributes.images = images;\n\t\tgalleryBlock.attributes.ids = ids;\n\t}\n\n\treturn toBlock;\n}\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/gallery/update-third-party-transform-from',\n\tupdateThirdPartyTransformFromGallery\n);\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ 'core/image' ],\n\t\t\ttransform: ( attributes ) => {\n\t\t\t\t// Init the align and size from the first item which may be either the placeholder or an image.\n\t\t\t\tlet { align, sizeSlug } = attributes[ 0 ];\n\t\t\t\t// Loop through all the images and check if they have the same align and size.\n\t\t\t\talign = every( attributes, [ 'align', align ] )\n\t\t\t\t\t? align\n\t\t\t\t\t: undefined;\n\t\t\t\tsizeSlug = every( attributes, [ 'sizeSlug', sizeSlug ] )\n\t\t\t\t\t? sizeSlug\n\t\t\t\t\t: undefined;\n\n\t\t\t\tconst validImages = filter( attributes, ( { url } ) => url );\n\n\t\t\t\tif ( isGalleryV2Enabled() ) {\n\t\t\t\t\tconst innerBlocks = validImages.map( ( image ) => {\n\t\t\t\t\t\t// Gallery images can't currently be resized so make sure height and width are undefined.\n\t\t\t\t\t\timage.width = undefined;\n\t\t\t\t\t\timage.height = undefined;\n\t\t\t\t\t\treturn createBlock( 'core/image', image );\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn createBlock(\n\t\t\t\t\t\t'core/gallery',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t\t\tsizeSlug,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinnerBlocks\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn createBlock( 'core/gallery', {\n\t\t\t\t\timages: validImages.map(\n\t\t\t\t\t\t( { id, url, alt, caption } ) => ( {\n\t\t\t\t\t\t\tid: id.toString(),\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\talt,\n\t\t\t\t\t\t\tcaption,\n\t\t\t\t\t\t} )\n\t\t\t\t\t),\n\t\t\t\t\tids: validImages.map( ( { id } ) => parseInt( id, 10 ) ),\n\t\t\t\t\talign,\n\t\t\t\t\tsizeSlug,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'shortcode',\n\t\t\ttag: 'gallery',\n\n\t\t\tattributes: {\n\t\t\t\timages: {\n\t\t\t\t\ttype: 'array',\n\t\t\t\t\tshortcode: ( { named: { ids } } ) => {\n\t\t\t\t\t\tif ( ! isGalleryV2Enabled() ) {\n\t\t\t\t\t\t\treturn parseShortcodeIds( ids ).map( ( id ) => ( {\n\t\t\t\t\t\t\t\tid: id.toString(),\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\tids: {\n\t\t\t\t\ttype: 'array',\n\t\t\t\t\tshortcode: ( { named: { ids } } ) => {\n\t\t\t\t\t\tif ( ! isGalleryV2Enabled() ) {\n\t\t\t\t\t\t\treturn parseShortcodeIds( ids );\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tcolumns: {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tshortcode: ( { named: { columns = '3' } } ) => {\n\t\t\t\t\t\treturn parseInt( columns, 10 );\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlinkTo: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( { named: { link } } ) => {\n\t\t\t\t\t\tif ( ! isGalleryV2Enabled() ) {\n\t\t\t\t\t\t\tswitch ( link ) {\n\t\t\t\t\t\t\t\tcase 'post':\n\t\t\t\t\t\t\t\t\treturn DEPRECATED_LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\t\t\t\tcase 'file':\n\t\t\t\t\t\t\t\t\treturn DEPRECATED_LINK_DESTINATION_MEDIA;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn DEPRECATED_LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch ( link ) {\n\t\t\t\t\t\t\tcase 'post':\n\t\t\t\t\t\t\t\treturn LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\t\t\tcase 'file':\n\t\t\t\t\t\t\t\treturn LINK_DESTINATION_MEDIA;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\treturn LINK_DESTINATION_NONE;\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\ttransform( { named: { ids, columns = 3, link } } ) {\n\t\t\t\tconst imageIds = parseShortcodeIds( ids ).map( ( id ) =>\n\t\t\t\t\tparseInt( id, 10 )\n\t\t\t\t);\n\n\t\t\t\tlet linkTo = LINK_DESTINATION_NONE;\n\t\t\t\tif ( link === 'post' ) {\n\t\t\t\t\tlinkTo = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t} else if ( link === 'file' ) {\n\t\t\t\t\tlinkTo = LINK_DESTINATION_MEDIA;\n\t\t\t\t}\n\n\t\t\t\tconst galleryBlock = createBlock(\n\t\t\t\t\t'core/gallery',\n\t\t\t\t\t{\n\t\t\t\t\t\tcolumns: parseInt( columns, 10 ),\n\t\t\t\t\t\tlinkTo,\n\t\t\t\t\t},\n\t\t\t\t\timageIds.map( ( imageId ) =>\n\t\t\t\t\t\tcreateBlock( 'core/image', { id: imageId } )\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\treturn galleryBlock;\n\t\t\t},\n\t\t\tisMatch( { named } ) {\n\t\t\t\treturn undefined !== named.ids;\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// When created by drag and dropping multiple files on an insertion point. Because multiple\n\t\t\t// files must not be transformed to a gallery when dropped within a gallery there is another transform\n\t\t\t// within the image block to handle that case. Therefore this transform has to have priority 1\n\t\t\t// set so that it overrrides the image block transformation when mulitple images are dropped outside\n\t\t\t// of a gallery block.\n\t\t\ttype: 'files',\n\t\t\tpriority: 1,\n\t\t\tisMatch( files ) {\n\t\t\t\treturn (\n\t\t\t\t\tfiles.length !== 1 &&\n\t\t\t\t\tevery(\n\t\t\t\t\t\tfiles,\n\t\t\t\t\t\t( file ) => file.type.indexOf( 'image/' ) === 0\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t},\n\t\t\ttransform( files ) {\n\t\t\t\tif ( isGalleryV2Enabled() ) {\n\t\t\t\t\tconst innerBlocks = files.map( ( file ) =>\n\t\t\t\t\t\tcreateBlock( 'core/image', {\n\t\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn createBlock( 'core/gallery', {}, innerBlocks );\n\t\t\t\t}\n\t\t\t\tconst block = createBlock( 'core/gallery', {\n\t\t\t\t\timages: files.map( ( file ) =>\n\t\t\t\t\t\tpickRelevantMediaFiles( {\n\t\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t\t} )\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t\treturn block;\n\t\t\t},\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/image' ],\n\t\t\ttransform: ( { align, images, ids, sizeSlug }, innerBlocks ) => {\n\t\t\t\tif ( isGalleryV2Enabled() ) {\n\t\t\t\t\tif ( innerBlocks.length > 0 ) {\n\t\t\t\t\t\treturn innerBlocks.map(\n\t\t\t\t\t\t\t( {\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t\t\talt,\n\t\t\t\t\t\t\t\t\tcaption,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\thref,\n\t\t\t\t\t\t\t\t\trel,\n\t\t\t\t\t\t\t\t\tlinkClass,\n\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\tsizeSlug: imageSizeSlug,\n\t\t\t\t\t\t\t\t\tlinkDestination,\n\t\t\t\t\t\t\t\t\tlinkTarget,\n\t\t\t\t\t\t\t\t\tanchor,\n\t\t\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} ) =>\n\t\t\t\t\t\t\t\tcreateBlock( 'core/image', {\n\t\t\t\t\t\t\t\t\talign,\n\t\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t\t\talt,\n\t\t\t\t\t\t\t\t\tcaption,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\thref,\n\t\t\t\t\t\t\t\t\trel,\n\t\t\t\t\t\t\t\t\tlinkClass,\n\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\tsizeSlug: imageSizeSlug,\n\t\t\t\t\t\t\t\t\tlinkDestination,\n\t\t\t\t\t\t\t\t\tlinkTarget,\n\t\t\t\t\t\t\t\t\tanchor,\n\t\t\t\t\t\t\t\t\tclassName,\n\t\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\treturn createBlock( 'core/image', { align } );\n\t\t\t\t}\n\t\t\t\tif ( images.length > 0 ) {\n\t\t\t\t\treturn images.map( ( { url, alt, caption }, index ) =>\n\t\t\t\t\t\tcreateBlock( 'core/image', {\n\t\t\t\t\t\t\tid: ids[ index ],\n\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\talt,\n\t\t\t\t\t\t\tcaption,\n\t\t\t\t\t\t\talign,\n\t\t\t\t\t\t\tsizeSlug,\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn createBlock( 'core/image', { align } );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { gallery 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-wrapper';\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\tcolumns: 2,\n\t\t},\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/image',\n\t\t\t\tattributes: {\n\t\t\t\t\turl: 'https://s.w.org/images/core/5.3/Glacial_lakes%2C_Bhutan.jpg',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/image',\n\t\t\t\tattributes: {\n\t\t\t\t\turl: 'https://s.w.org/images/core/5.3/Sediment_off_the_Yucatan_Peninsula.jpg',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport saveWithoutInnerBlocks from './v1/save';\nimport { isGalleryV2Enabled } from './shared';\n\nexport default function saveWithInnerBlocks( { attributes } ) {\n\tif ( ! isGalleryV2Enabled() ) {\n\t\treturn saveWithoutInnerBlocks( { attributes } );\n\t}\n\n\tconst { caption, columns, imageCrop } = attributes;\n\n\tconst className = classnames( 'has-nested-images', {\n\t\t[ `columns-${ columns }` ]: columns !== undefined,\n\t\t[ `columns-default` ]: columns === undefined,\n\t\t'is-cropped': imageCrop,\n\t} );\n\tconst blockProps = useBlockProps.save( { className } );\n\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\n\treturn (\n\t\t<figure { ...innerBlocksProps }>\n\t\t\t{ innerBlocksProps.children }\n\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t<RichText.Content\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'blocks-gallery-caption',\n\t\t\t\t\t\t__experimentalGetElementClassName( 'caption' )\n\t\t\t\t\t) }\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</figure>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { defaultColumnsNumberV1 } from '../deprecated';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n} from './constants';\n\nexport default function saveV1( { attributes } ) {\n\tconst {\n\t\timages,\n\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\timageCrop,\n\t\tcaption,\n\t\tlinkTo,\n\t} = attributes;\n\tconst className = `columns-${ columns } ${ imageCrop ? 'is-cropped' : '' }`;\n\n\treturn (\n\t\t<figure { ...useBlockProps.save( { className } ) }>\n\t\t\t<ul className=\"blocks-gallery-grid\">\n\t\t\t\t{ images.map( ( image ) => {\n\t\t\t\t\tlet href;\n\n\t\t\t\t\tswitch ( linkTo ) {\n\t\t\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\t\t\thref = image.fullUrl || image.url;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\t\t\thref = image.link;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst img = (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={ image.url }\n\t\t\t\t\t\t\talt={ image.alt }\n\t\t\t\t\t\t\tdata-id={ image.id }\n\t\t\t\t\t\t\tdata-full-url={ image.fullUrl }\n\t\t\t\t\t\t\tdata-link={ image.link }\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\timage.id ? `wp-image-${ image.id }` : null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={ image.id || image.url }\n\t\t\t\t\t\t\tclassName=\"blocks-gallery-item\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<figure>\n\t\t\t\t\t\t\t\t{ href ? <a href={ href }>{ img }</a> : img }\n\t\t\t\t\t\t\t\t{ ! RichText.isEmpty( image.caption ) && (\n\t\t\t\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t\t\t'blocks-gallery-item',\n\t\t\t\t\t\t\t\t\t\t\t__experimentalGetElementClassName(\n\t\t\t\t\t\t\t\t\t\t\t\t'caption'\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tvalue={ image.caption }\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</figure>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</ul>\n\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t<RichText.Content\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'blocks-gallery-caption',\n\t\t\t\t\t\t__experimentalGetElementClassName( 'caption' )\n\t\t\t\t\t) }\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</figure>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst group = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M18 4h-7c-1.1 0-2 .9-2 2v3H6c-1.1 0-2 .9-2 2v7c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2v-3h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-4.5 14c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-7c0-.3.2-.5.5-.5h3V13c0 1.1.9 2 2 2h2.5v3zm0-4.5H11c-.3 0-.5-.2-.5-.5v-2.5H13c.3 0 .5.2.5.5v2.5zm5-.5c0 .3-.2.5-.5.5h-3V11c0-1.1-.9-2-2-2h-2.5V6c0-.3.2-.5.5-.5h7c.3 0 .5.2.5.5v7z\" />\n\t</SVG>\n);\n\nexport default group;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tInnerBlocks,\n\tgetColorClassName,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\n\nconst migrateAttributes = ( attributes ) => {\n\tif ( ! attributes.tagName ) {\n\t\tattributes = {\n\t\t\t...attributes,\n\t\t\ttagName: 'div',\n\t\t};\n\t}\n\n\tif ( ! attributes.customTextColor && ! attributes.customBackgroundColor ) {\n\t\treturn attributes;\n\t}\n\tconst style = { color: {} };\n\tif ( attributes.customTextColor ) {\n\t\tstyle.color.text = attributes.customTextColor;\n\t}\n\tif ( attributes.customBackgroundColor ) {\n\t\tstyle.color.background = attributes.customBackgroundColor;\n\t}\n\n\tconst { customTextColor, customBackgroundColor, ...restAttributes } =\n\t\tattributes;\n\n\treturn {\n\t\t...restAttributes,\n\t\tstyle,\n\t};\n};\n\nconst deprecated = [\n\t// Version with default layout.\n\t{\n\t\tattributes: {\n\t\t\ttagName: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'div',\n\t\t\t},\n\t\t\ttemplateLock: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\t__experimentalOnEnter: true,\n\t\t\t__experimentalSettings: true,\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\tanchor: true,\n\t\t\tariaLabel: true,\n\t\t\thtml: false,\n\t\t\tcolor: {\n\t\t\t\tgradients: true,\n\t\t\t\tlink: true,\n\t\t\t\t__experimentalDefaultControls: {\n\t\t\t\t\tbackground: true,\n\t\t\t\t\ttext: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\tspacing: {\n\t\t\t\tmargin: [ 'top', 'bottom' ],\n\t\t\t\tpadding: true,\n\t\t\t\tblockGap: true,\n\t\t\t\t__experimentalDefaultControls: {\n\t\t\t\t\tpadding: true,\n\t\t\t\t\tblockGap: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\t__experimentalBorder: {\n\t\t\t\tcolor: true,\n\t\t\t\tradius: true,\n\t\t\t\tstyle: true,\n\t\t\t\twidth: true,\n\t\t\t\t__experimentalDefaultControls: {\n\t\t\t\t\tcolor: true,\n\t\t\t\t\tradius: true,\n\t\t\t\t\tstyle: true,\n\t\t\t\t\twidth: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\ttypography: {\n\t\t\t\tfontSize: true,\n\t\t\t\tlineHeight: true,\n\t\t\t\t__experimentalFontStyle: true,\n\t\t\t\t__experimentalFontWeight: true,\n\t\t\t\t__experimentalLetterSpacing: true,\n\t\t\t\t__experimentalTextTransform: true,\n\t\t\t\t__experimentalDefaultControls: {\n\t\t\t\t\tfontSize: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\t__experimentalLayout: true,\n\t\t},\n\t\tsave( { attributes: { tagName: Tag } } ) {\n\t\t\treturn (\n\t\t\t\t<Tag { ...useInnerBlocksProps.save( useBlockProps.save() ) } />\n\t\t\t);\n\t\t},\n\t\tisEligible: ( { layout } ) =>\n\t\t\t! layout || layout.inherit || layout.contentSize,\n\t\tmigrate: ( attributes ) => {\n\t\t\tconst { layout = null } = attributes;\n\t\t\tif ( ! layout ) {\n\t\t\t\treturn attributes;\n\t\t\t}\n\t\t\tif ( layout.inherit || layout.contentSize ) {\n\t\t\t\treturn {\n\t\t\t\t\t...attributes,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...layout,\n\t\t\t\t\t\ttype: 'constrained',\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t},\n\t// Version of the block with the double div.\n\t{\n\t\tattributes: {\n\t\t\ttagName: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'div',\n\t\t\t},\n\t\t\ttemplateLock: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\tanchor: true,\n\t\t\tcolor: {\n\t\t\t\tgradients: true,\n\t\t\t\tlink: true,\n\t\t\t},\n\t\t\tspacing: {\n\t\t\t\tpadding: true,\n\t\t\t},\n\t\t\t__experimentalBorder: {\n\t\t\t\tradius: true,\n\t\t\t},\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst { tagName: Tag } = attributes;\n\n\t\t\treturn (\n\t\t\t\t<Tag { ...useBlockProps.save() }>\n\t\t\t\t\t<div className=\"wp-block-group__inner-container\">\n\t\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t\t</div>\n\t\t\t\t</Tag>\n\t\t\t);\n\t\t},\n\t},\n\t// Version of the block without global styles support\n\t{\n\t\tattributes: {\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\tanchor: true,\n\t\t\thtml: false,\n\t\t},\n\t\tmigrate: migrateAttributes,\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\tbackgroundColor,\n\t\t\t\tcustomBackgroundColor,\n\t\t\t\ttextColor,\n\t\t\t\tcustomTextColor,\n\t\t\t} = attributes;\n\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\t\t\tconst className = classnames( backgroundClass, textClass, {\n\t\t\t\t'has-text-color': textColor || customTextColor,\n\t\t\t\t'has-background': backgroundColor || customBackgroundColor,\n\t\t\t} );\n\n\t\t\tconst styles = {\n\t\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t\t? undefined\n\t\t\t\t\t: customBackgroundColor,\n\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<div className={ className } style={ styles }>\n\t\t\t\t\t<div className=\"wp-block-group__inner-container\">\n\t\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n\t// Version of the group block with a bug that made text color class not applied.\n\t{\n\t\tattributes: {\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tmigrate: migrateAttributes,\n\t\tsupports: {\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\tanchor: true,\n\t\t\thtml: false,\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\tbackgroundColor,\n\t\t\t\tcustomBackgroundColor,\n\t\t\t\ttextColor,\n\t\t\t\tcustomTextColor,\n\t\t\t} = attributes;\n\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\t\t\tconst className = classnames( backgroundClass, {\n\t\t\t\t'has-text-color': textColor || customTextColor,\n\t\t\t\t'has-background': backgroundColor || customBackgroundColor,\n\t\t\t} );\n\n\t\t\tconst styles = {\n\t\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t\t? undefined\n\t\t\t\t\t: customBackgroundColor,\n\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<div className={ className } style={ styles }>\n\t\t\t\t\t<div className=\"wp-block-group__inner-container\">\n\t\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n\t// v1 of group block. Deprecated to add an inner-container div around `InnerBlocks.Content`.\n\t{\n\t\tattributes: {\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\tanchor: true,\n\t\t\thtml: false,\n\t\t},\n\t\tmigrate: migrateAttributes,\n\t\tsave( { attributes } ) {\n\t\t\tconst { backgroundColor, customBackgroundColor } = attributes;\n\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\t\t\tconst className = classnames( backgroundClass, {\n\t\t\t\t'has-background': backgroundColor || customBackgroundColor,\n\t\t\t} );\n\n\t\t\tconst styles = {\n\t\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t\t? undefined\n\t\t\t\t\t: customBackgroundColor,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<div className={ className } style={ styles }>\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\nimport {\n\tInnerBlocks,\n\tuseBlockProps,\n\tInspectorControls,\n\tuseInnerBlocksProps,\n\tuseSetting,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nconst htmlElementMessages = {\n\theader: __(\n\t\t'The <header> element should represent introductory content, typically a group of introductory or navigational aids.'\n\t),\n\tmain: __(\n\t\t'The <main> element should be used for the primary content of your document only. '\n\t),\n\tsection: __(\n\t\t\"The <section> element should represent a standalone portion of the document that can't be better represented by another element.\"\n\t),\n\tarticle: __(\n\t\t'The <article> element should represent a self contained, syndicatable portion of the document.'\n\t),\n\taside: __(\n\t\t\"The <aside> element should represent a portion of a document whose content is only indirectly related to the document's main content.\"\n\t),\n\tfooter: __(\n\t\t'The <footer> element should represent a footer for its nearest sectioning element (e.g.: <section>, <article>, <main> etc.).'\n\t),\n};\n\nfunction GroupEdit( { attributes, setAttributes, clientId } ) {\n\tconst { hasInnerBlocks, themeSupportsLayout } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getSettings } = select( blockEditorStore );\n\t\t\tconst block = getBlock( clientId );\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: !! ( block && block.innerBlocks.length ),\n\t\t\t\tthemeSupportsLayout: getSettings()?.supportsLayout,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst defaultLayout = useSetting( 'layout' ) || {};\n\tconst { tagName: TagName = 'div', templateLock, layout = {} } = attributes;\n\tconst usedLayout = ! layout?.type\n\t\t? { ...defaultLayout, ...layout, type: 'default' }\n\t\t: { ...defaultLayout, ...layout };\n\tconst { type = 'default' } = usedLayout;\n\tconst layoutSupportEnabled = themeSupportsLayout || type === 'flex';\n\n\tconst blockProps = useBlockProps();\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\tlayoutSupportEnabled\n\t\t\t? blockProps\n\t\t\t: { className: 'wp-block-group__inner-container' },\n\t\t{\n\t\t\ttemplateLock,\n\t\t\trenderAppender: hasInnerBlocks\n\t\t\t\t? undefined\n\t\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t\t\t__experimentalLayout: layoutSupportEnabled ? usedLayout : undefined,\n\t\t}\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t<SelectControl\n\t\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\t\toptions={ [\n\t\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t\t{ label: '<header>', value: 'header' },\n\t\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t\t{ label: '<article>', value: 'article' },\n\t\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t\t{ label: '<footer>', value: 'footer' },\n\t\t\t\t\t] }\n\t\t\t\t\tvalue={ TagName }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={ htmlElementMessages[ TagName ] }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t{ layoutSupportEnabled && <TagName { ...innerBlocksProps } /> }\n\t\t\t{ /* Ideally this is not needed but it's there for backward compatibility reason\n\t\t\t\tto keep this div for themes that might rely on its presence */ }\n\t\t\t{ ! layoutSupportEnabled && (\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t\t</TagName>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default GroupEdit;\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ '*' ],\n\t\t\t__experimentalConvert( blocks ) {\n\t\t\t\tconst alignments = [ 'wide', 'full' ];\n\n\t\t\t\t// Determine the widest setting of all the blocks to be grouped\n\t\t\t\tconst widestAlignment = blocks.reduce(\n\t\t\t\t\t( accumulator, block ) => {\n\t\t\t\t\t\tconst { align } = block.attributes;\n\t\t\t\t\t\treturn alignments.indexOf( align ) >\n\t\t\t\t\t\t\talignments.indexOf( accumulator )\n\t\t\t\t\t\t\t? align\n\t\t\t\t\t\t\t: accumulator;\n\t\t\t\t\t},\n\t\t\t\t\tundefined\n\t\t\t\t);\n\n\t\t\t\t// Clone the Blocks to be Grouped\n\t\t\t\t// Failing to create new block references causes the original blocks\n\t\t\t\t// to be replaced in the switchToBlockType call thereby meaning they\n\t\t\t\t// are removed both from their original location and within the\n\t\t\t\t// new group block.\n\t\t\t\tconst groupInnerBlocks = blocks.map( ( block ) => {\n\t\t\t\t\treturn createBlock(\n\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\tblock.attributes,\n\t\t\t\t\t\tblock.innerBlocks\n\t\t\t\t\t);\n\t\t\t\t} );\n\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\talign: widestAlignment,\n\t\t\t\t\t\tlayout: { type: 'constrained' },\n\t\t\t\t\t},\n\t\t\t\t\tgroupInnerBlocks\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ '*' ],\n\t\t\ttransform: ( attributes, innerBlocks ) => innerBlocks,\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst row = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M9.2 6.5H4V8h5.2c.3 0 .5.2.5.5v7c0 .3-.2.5-.5.5H4v1.5h5.2c1.1 0 2-.9 2-2v-7c0-1.1-.8-2-2-2zM14.8 8H20V6.5h-5.2c-1.1 0-2 .9-2 2v7c0 1.1.9 2 2 2H20V16h-5.2c-.3 0-.5-.2-.5-.5v-7c-.1-.3.2-.5.5-.5z\" />\n\t</SVG>\n);\n\nexport default row;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst stack = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M16 4v5.2c0 .3-.2.5-.5.5h-7c-.3.1-.5-.2-.5-.5V4H6.5v5.2c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2V4H16zm-.5 8.8h-7c-1.1 0-2 .9-2 2V20H8v-5.2c0-.3.2-.5.5-.5h7c.3 0 .5.2.5.5V20h1.5v-5.2c0-1.2-.9-2-2-2z\" />\n\t</SVG>\n);\n\nexport default stack;\n","/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { group, row, stack } from '@wordpress/icons';\n\nconst variations = [\n\t{\n\t\tname: 'group',\n\t\ttitle: __( 'Group' ),\n\t\tdescription: __( 'Gather blocks in a container.' ),\n\t\tattributes: { layout: { type: 'constrained' } },\n\t\tisDefault: true,\n\t\tscope: [ 'inserter', 'transform' ],\n\t\tisActive: ( blockAttributes ) =>\n\t\t\t! blockAttributes.layout ||\n\t\t\t! blockAttributes.layout?.type ||\n\t\t\tblockAttributes.layout?.type === 'default' ||\n\t\t\tblockAttributes.layout?.type === 'constrained',\n\t\ticon: group,\n\t},\n\t{\n\t\tname: 'group-row',\n\t\ttitle: _x( 'Row', 'single horizontal line' ),\n\t\tdescription: __( 'Arrange blocks horizontally.' ),\n\t\tattributes: { layout: { type: 'flex', flexWrap: 'nowrap' } },\n\t\tscope: [ 'inserter', 'transform' ],\n\t\tisActive: ( blockAttributes ) =>\n\t\t\tblockAttributes.layout?.type === 'flex' &&\n\t\t\t( ! blockAttributes.layout?.orientation ||\n\t\t\t\tblockAttributes.layout?.orientation === 'horizontal' ),\n\t\ticon: row,\n\t},\n\t{\n\t\tname: 'group-stack',\n\t\ttitle: __( 'Stack' ),\n\t\tdescription: __( 'Arrange blocks vertically.' ),\n\t\tattributes: { layout: { type: 'flex', orientation: 'vertical' } },\n\t\tscope: [ 'inserter', 'transform' ],\n\t\tisActive: ( blockAttributes ) =>\n\t\t\tblockAttributes.layout?.type === 'flex' &&\n\t\t\tblockAttributes.layout?.orientation === 'vertical',\n\t\ticon: stack,\n\t},\n];\n\nexport default variations;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { group as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\nimport variations from './variations';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tstyle: {\n\t\t\t\tcolor: {\n\t\t\t\t\ttext: '#000000',\n\t\t\t\t\tbackground: '#ffffff',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcustomTextColor: '#cf2e2e',\n\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\tcontent: __( 'One.' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcustomTextColor: '#ff6900',\n\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\tcontent: __( 'Two.' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcustomTextColor: '#fcb900',\n\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\tcontent: __( 'Three.' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcustomTextColor: '#00d084',\n\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\tcontent: __( 'Four.' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcustomTextColor: '#0693e3',\n\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\tcontent: __( 'Five.' ),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcustomTextColor: '#9b51e0',\n\t\t\t\t\tfontSize: 'large',\n\t\t\t\t\tcontent: __( 'Six.' ),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n\tdeprecated,\n\tvariations,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes: { tagName: Tag } } ) {\n\treturn <Tag { ...useInnerBlocksProps.save( useBlockProps.save() ) } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst heading = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M6.2 5.2v13.4l5.8-4.8 5.8 4.8V5.2z\" />\n\t</SVG>\n);\n\nexport default heading;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetColorClassName,\n\tRichText,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\nconst blockSupports = {\n\tclassName: false,\n\tanchor: true,\n};\n\nconst blockAttributes = {\n\talign: {\n\t\ttype: 'string',\n\t},\n\tcontent: {\n\t\ttype: 'string',\n\t\tsource: 'html',\n\t\tselector: 'h1,h2,h3,h4,h5,h6',\n\t\tdefault: '',\n\t},\n\tlevel: {\n\t\ttype: 'number',\n\t\tdefault: 2,\n\t},\n\tplaceholder: {\n\t\ttype: 'string',\n\t},\n};\n\nconst migrateCustomColors = ( attributes ) => {\n\tif ( ! attributes.customTextColor ) {\n\t\treturn attributes;\n\t}\n\tconst style = {\n\t\tcolor: {\n\t\t\ttext: attributes.customTextColor,\n\t\t},\n\t};\n\n\tconst { customTextColor, ...restAttributes } = attributes;\n\n\treturn {\n\t\t...restAttributes,\n\t\tstyle,\n\t};\n};\n\nconst TEXT_ALIGN_OPTIONS = [ 'left', 'right', 'center' ];\n\nconst migrateTextAlign = ( attributes ) => {\n\tconst { align, ...rest } = attributes;\n\treturn TEXT_ALIGN_OPTIONS.includes( align )\n\t\t? { ...rest, textAlign: align }\n\t\t: attributes;\n};\n\nconst deprecated = [\n\t{\n\t\tsupports: {\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\tanchor: true,\n\t\t\tclassName: false,\n\t\t\tcolor: { link: true },\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalSelector: {\n\t\t\t\t'core/heading/h1': 'h1',\n\t\t\t\t'core/heading/h2': 'h2',\n\t\t\t\t'core/heading/h3': 'h3',\n\t\t\t\t'core/heading/h4': 'h4',\n\t\t\t\t'core/heading/h5': 'h5',\n\t\t\t\t'core/heading/h6': 'h6',\n\t\t\t},\n\t\t\t__unstablePasteTextInline: true,\n\t\t},\n\t\tattributes: blockAttributes,\n\t\tisEligible: ( { align } ) => TEXT_ALIGN_OPTIONS.includes( align ),\n\t\tmigrate: migrateTextAlign,\n\t\tsave( { attributes } ) {\n\t\t\tconst { align, content, level } = attributes;\n\t\t\tconst TagName = 'h' + level;\n\n\t\t\tconst className = classnames( {\n\t\t\t\t[ `has-text-align-${ align }` ]: align,\n\t\t\t} );\n\n\t\t\treturn (\n\t\t\t\t<TagName { ...useBlockProps.save( { className } ) }>\n\t\t\t\t\t<RichText.Content value={ content } />\n\t\t\t\t</TagName>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tsupports: blockSupports,\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tmigrate: ( attributes ) =>\n\t\t\tmigrateCustomColors( migrateTextAlign( attributes ) ),\n\t\tsave( { attributes } ) {\n\t\t\tconst { align, content, customTextColor, level, textColor } =\n\t\t\t\tattributes;\n\t\t\tconst tagName = 'h' + level;\n\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\n\t\t\tconst className = classnames( {\n\t\t\t\t[ textClass ]: textClass,\n\t\t\t\t'has-text-color': textColor || customTextColor,\n\t\t\t\t[ `has-text-align-${ align }` ]: align,\n\t\t\t} );\n\n\t\t\treturn (\n\t\t\t\t<RichText.Content\n\t\t\t\t\tclassName={ className ? className : undefined }\n\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ content }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tmigrate: ( attributes ) =>\n\t\t\tmigrateCustomColors( migrateTextAlign( attributes ) ),\n\t\tsave( { attributes } ) {\n\t\t\tconst { align, content, customTextColor, level, textColor } =\n\t\t\t\tattributes;\n\t\t\tconst tagName = 'h' + level;\n\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\n\t\t\tconst className = classnames( {\n\t\t\t\t[ textClass ]: textClass,\n\t\t\t\t[ `has-text-align-${ align }` ]: align,\n\t\t\t} );\n\n\t\t\treturn (\n\t\t\t\t<RichText.Content\n\t\t\t\t\tclassName={ className ? className : undefined }\n\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ content }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t\tsupports: blockSupports,\n\t},\n\t{\n\t\tsupports: blockSupports,\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tmigrate: ( attributes ) =>\n\t\t\tmigrateCustomColors( migrateTextAlign( attributes ) ),\n\t\tsave( { attributes } ) {\n\t\t\tconst { align, level, content, textColor, customTextColor } =\n\t\t\t\tattributes;\n\t\t\tconst tagName = 'h' + level;\n\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\n\t\t\tconst className = classnames( {\n\t\t\t\t[ textClass ]: textClass,\n\t\t\t} );\n\n\t\t\treturn (\n\t\t\t\t<RichText.Content\n\t\t\t\t\tclassName={ className ? className : undefined }\n\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ content }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\n\n/**\n * Object map tracking anchors.\n *\n * @type {Record<string, string | null>}\n */\nconst anchors = {};\n\n/**\n * Returns the text without markup.\n *\n * @param {string} text The text.\n *\n * @return {string} The text without markup.\n */\nconst getTextWithoutMarkup = ( text ) => {\n\tconst dummyElement = document.createElement( 'div' );\n\tdummyElement.innerHTML = text;\n\treturn dummyElement.innerText;\n};\n\n/**\n * Get the slug from the content.\n *\n * @param {string} content The block content.\n *\n * @return {string} Returns the slug.\n */\nconst getSlug = ( content ) => {\n\t// Get the slug.\n\treturn (\n\t\tremoveAccents( getTextWithoutMarkup( content ) )\n\t\t\t// Convert anything that's not a letter or number to a hyphen.\n\t\t\t.replace( /[^\\p{L}\\p{N}]+/gu, '-' )\n\t\t\t// Convert to lowercase\n\t\t\t.toLowerCase()\n\t\t\t// Remove any remaining leading or trailing hyphens.\n\t\t\t.replace( /(^-+)|(-+$)/g, '' )\n\t);\n};\n\n/**\n * Generate the anchor for a heading.\n *\n * @param {string} clientId The block ID.\n * @param {string} content  The block content.\n *\n * @return {string|null} Return the heading anchor.\n */\nexport const generateAnchor = ( clientId, content ) => {\n\tconst slug = getSlug( content );\n\t// If slug is empty, then return null.\n\t// Returning null instead of an empty string allows us to check again when the content changes.\n\tif ( '' === slug ) {\n\t\treturn null;\n\t}\n\n\tdelete anchors[ clientId ];\n\n\tlet anchor = slug;\n\tlet i = 0;\n\n\t// If the anchor already exists in another heading, append -i.\n\twhile ( Object.values( anchors ).includes( anchor ) ) {\n\t\ti += 1;\n\t\tanchor = slug + '-' + i;\n\t}\n\n\treturn anchor;\n};\n\n/**\n * Set the anchor for a heading.\n *\n * @param {string}      clientId The block ID.\n * @param {string|null} anchor   The block anchor.\n */\nexport const setAnchor = ( clientId, anchor ) => {\n\tanchors[ clientId ] = anchor;\n};\n","/**\n * WordPress dependencies\n */\nimport { createBlock, getBlockAttributes } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { getLevelFromHeadingNodeName } from './shared';\nimport { name } from './block.json';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ 'core/paragraph' ],\n\t\t\ttransform: ( attributes ) =>\n\t\t\t\tattributes.map( ( { content, anchor, align: textAlign } ) =>\n\t\t\t\t\tcreateBlock( name, {\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\tanchor,\n\t\t\t\t\t\ttextAlign,\n\t\t\t\t\t} )\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tselector: 'h1,h2,h3,h4,h5,h6',\n\t\t\tschema: ( { phrasingContentSchema, isPaste } ) => {\n\t\t\t\tconst schema = {\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\treturn {\n\t\t\t\t\th1: schema,\n\t\t\t\t\th2: schema,\n\t\t\t\t\th3: schema,\n\t\t\t\t\th4: schema,\n\t\t\t\t\th5: schema,\n\t\t\t\t\th6: schema,\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\tattributes.level = getLevelFromHeadingNodeName( node.nodeName );\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\t...[ 1, 2, 3, 4, 5, 6 ].map( ( level ) => ( {\n\t\t\ttype: 'prefix',\n\t\t\tprefix: Array( level + 1 ).join( '#' ),\n\t\t\ttransform( content ) {\n\t\t\t\treturn createBlock( name, {\n\t\t\t\t\tlevel,\n\t\t\t\t\tcontent,\n\t\t\t\t} );\n\t\t\t},\n\t\t} ) ),\n\t\t...[ 1, 2, 3, 4, 5, 6 ].map( ( level ) => ( {\n\t\t\ttype: 'enter',\n\t\t\tregExp: new RegExp( `^/(h|H)${ level }$` ),\n\t\t\ttransform( content ) {\n\t\t\t\treturn createBlock( name, {\n\t\t\t\t\tlevel,\n\t\t\t\t\tcontent,\n\t\t\t\t} );\n\t\t\t},\n\t\t} ) ),\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ 'core/paragraph' ],\n\t\t\ttransform: ( attributes ) =>\n\t\t\t\tattributes.map( ( { content, textAlign: align } ) =>\n\t\t\t\t\tcreateBlock( 'core/paragraph', { content, align } )\n\t\t\t\t),\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * Given a node name string for a heading node, returns its numeric level.\n *\n * @param {string} nodeName Heading node name.\n *\n * @return {number} Heading level.\n */\nexport function getLevelFromHeadingNodeName( nodeName ) {\n\treturn Number( nodeName.substr( 1 ) );\n}\n","/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { heading as icon } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\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: __( 'Code is Poetry' ),\n\t\t\tlevel: 2,\n\t\t},\n\t},\n\t__experimentalLabel( attributes, { context } ) {\n\t\tconst { content, level } = attributes;\n\n\t\t// In the list view, use the block's content as the label.\n\t\t// If the content is empty, fall back to the default label.\n\t\tif ( context === 'list-view' && content ) {\n\t\t\treturn content;\n\t\t}\n\n\t\tif ( context === 'accessibility' ) {\n\t\t\treturn isEmpty( content )\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: accessibility text. %s: heading level. */\n\t\t\t\t\t\t__( 'Level %s. Empty.' ),\n\t\t\t\t\t\tlevel\n\t\t\t\t  )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: accessibility text. 1: heading level. 2: heading content. */\n\t\t\t\t\t\t__( 'Level %1$s. %2$s' ),\n\t\t\t\t\t\tlevel,\n\t\t\t\t\t\tcontent\n\t\t\t\t  );\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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, Platform } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport HeadingLevelDropdown from './heading-level-dropdown';\nimport { generateAnchor, setAnchor } from './autogenerate-anchors';\n\nfunction HeadingEdit( {\n\tattributes,\n\tsetAttributes,\n\tmergeBlocks,\n\tonReplace,\n\tstyle,\n\tclientId,\n} ) {\n\tconst { textAlign, content, level, placeholder, anchor } = attributes;\n\tconst tagName = 'h' + level;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t\tstyle,\n\t} );\n\n\tconst { canGenerateAnchors } = useSelect( ( select ) => {\n\t\tconst { getGlobalBlockCount, getSettings } = select( blockEditorStore );\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tcanGenerateAnchors:\n\t\t\t\t!! settings.generateAnchors ||\n\t\t\t\tgetGlobalBlockCount( 'core/table-of-contents' ) > 0,\n\t\t};\n\t}, [] );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// Initially set anchor for headings that have content but no anchor set.\n\t// This is used when transforming a block to heading, or for legacy anchors.\n\tuseEffect( () => {\n\t\tif ( ! canGenerateAnchors ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! anchor && content ) {\n\t\t\t// This side-effect should not create an undo level.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tanchor: generateAnchor( clientId, content ),\n\t\t\t} );\n\t\t}\n\t\tsetAnchor( clientId, anchor );\n\n\t\t// Remove anchor map when block unmounts.\n\t\treturn () => setAnchor( clientId, null );\n\t}, [ anchor, content, clientId, canGenerateAnchors ] );\n\n\tconst onContentChange = ( value ) => {\n\t\tconst newAttrs = { content: value };\n\t\tif (\n\t\t\tcanGenerateAnchors &&\n\t\t\t( ! anchor ||\n\t\t\t\t! value ||\n\t\t\t\tgenerateAnchor( clientId, content ) === anchor )\n\t\t) {\n\t\t\tnewAttrs.anchor = generateAnchor( clientId, value );\n\t\t}\n\t\tsetAttributes( newAttrs );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\tselectedLevel={ level }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<RichText\n\t\t\t\tidentifier=\"content\"\n\t\t\t\ttagName={ tagName }\n\t\t\t\tvalue={ content }\n\t\t\t\tonChange={ onContentChange }\n\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\tonSplit={ ( value, isOriginal ) => {\n\t\t\t\t\tlet block;\n\n\t\t\t\t\tif ( isOriginal || value ) {\n\t\t\t\t\t\tblock = createBlock( 'core/heading', {\n\t\t\t\t\t\t\t...attributes,\n\t\t\t\t\t\t\tcontent: value,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tblock = createBlock(\n\t\t\t\t\t\t\tgetDefaultBlockName() ?? 'core/heading'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isOriginal ) {\n\t\t\t\t\t\tblock.clientId = clientId;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn block;\n\t\t\t\t} }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonRemove={ () => onReplace( [] ) }\n\t\t\t\taria-label={ __( 'Heading text' ) }\n\t\t\t\tplaceholder={ placeholder || __( 'Heading' ) }\n\t\t\t\ttextAlign={ textAlign }\n\t\t\t\t{ ...( Platform.isNative && { deleteEnter: true } ) } // setup RichText on native mobile to delete the \"Enter\" key as it's handled by the JS/RN side\n\t\t\t\t{ ...blockProps }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default HeadingEdit;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { textAlign, content, level } = attributes;\n\tconst TagName = 'h' + level;\n\n\tconst className = classnames( {\n\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t} );\n\n\treturn (\n\t\t<TagName { ...useBlockProps.save( { className } ) }>\n\t\t\t<RichText.Content value={ content } />\n\t\t</TagName>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst home = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z\" />\n\t</SVG>\n);\n\nexport default home;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useEffect } from '@wordpress/element';\n\nconst preventDefault = ( event ) => event.preventDefault();\n\nexport default function HomeEdit( { attributes, setAttributes, context } ) {\n\tconst { homeUrl } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetUnstableBase, // Site index.\n\t\t} = select( coreStore );\n\t\treturn {\n\t\t\thomeUrl: getUnstableBase()?.home,\n\t\t};\n\t}, [] );\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst { textColor, backgroundColor, style } = context;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( 'wp-block-navigation-item', {\n\t\t\t'has-text-color': !! textColor || !! style?.color?.text,\n\t\t\t[ `has-${ textColor }-color` ]: !! textColor,\n\t\t\t'has-background': !! backgroundColor || !! style?.color?.background,\n\t\t\t[ `has-${ backgroundColor }-background-color` ]: !! backgroundColor,\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: style?.color?.text,\n\t\t\tbackgroundColor: style?.color?.background,\n\t\t},\n\t} );\n\n\tconst { label } = attributes;\n\n\tuseEffect( () => {\n\t\tif ( label === undefined ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { label: __( 'Home' ) } );\n\t\t}\n\t}, [ label ] );\n\n\treturn (\n\t\t<>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<a\n\t\t\t\t\tclassName=\"wp-block-home-link__content wp-block-navigation-item__content\"\n\t\t\t\t\thref={ homeUrl }\n\t\t\t\t\tonClick={ preventDefault }\n\t\t\t\t>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\tclassName=\"wp-block-home-link__label\"\n\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\tonChange={ ( labelValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { label: labelValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\taria-label={ __( 'Home link text' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Add home link' ) }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tallowedFormats={ [\n\t\t\t\t\t\t\t'core/bold',\n\t\t\t\t\t\t\t'core/italic',\n\t\t\t\t\t\t\t'core/image',\n\t\t\t\t\t\t\t'core/strikethrough',\n\t\t\t\t\t\t] }\n\t\t\t\t\t/>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { _x } from '@wordpress/i18n';\nimport { home } 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 save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon: home,\n\n\tedit,\n\n\tsave,\n\n\texample: {\n\t\tattributes: {\n\t\t\tlabel: _x( 'Home Link', 'block example' ),\n\t\t},\n\t},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function save() {\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst html = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M4.8 11.4H2.1V9H1v6h1.1v-2.6h2.7V15h1.1V9H4.8v2.4zm1.9-1.3h1.7V15h1.1v-4.9h1.7V9H6.7v1.1zM16.2 9l-1.5 2.7L13.3 9h-.9l-.8 6h1.1l.5-4 1.5 2.8 1.5-2.8.5 4h1.1L17 9h-.8zm3.8 5V9h-1.1v6h3.6v-1H20z\" />\n\t</SVG>\n);\n\nexport default html;\n","/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport {\n\ttransformStyles,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { SandBox } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n// Default styles used to unset some of the styles\n// that might be inherited from the editor style.\nconst DEFAULT_STYLES = `\n\thtml,body,:root {\n\t\tmargin: 0 !important;\n\t\tpadding: 0 !important;\n\t\toverflow: visible !important;\n\t\tmin-height: auto !important;\n\t}\n`;\n\nexport default function HTMLEditPreview( { content, isSelected } ) {\n\tconst settingStyles = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings()?.styles;\n\t}, [] );\n\n\tconst styles = useMemo(\n\t\t() => [ DEFAULT_STYLES, ...transformStyles( settingStyles ) ],\n\t\t[ settingStyles ]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<SandBox html={ content } styles={ styles } />\n\t\t\t{ /*\n\t\t\t\tAn overlay is added when the block is not selected in order to register click events.\n\t\t\t\tSome browsers do not bubble up the clicks from the sandboxed iframe, which makes it\n\t\t\t\tdifficult to reselect the block.\n\t\t\t*/ }\n\t\t\t{ ! isSelected && (\n\t\t\t\t<div className=\"block-library-html__preview-overlay\"></div>\n\t\t\t) }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/code' ],\n\t\t\ttransform: ( { content } ) => {\n\t\t\t\treturn createBlock( 'core/html', {\n\t\t\t\t\tcontent,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { html 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\tcontent:\n\t\t\t\t'<marquee>' +\n\t\t\t\t__( 'Welcome to the wonderful world of blocks…' ) +\n\t\t\t\t'</marquee>',\n\t\t},\n\t},\n\tedit,\n\tsave,\n\ttransforms,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useContext, useState } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tPlainText,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, Disabled, ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport Preview from './preview';\n\nexport default function HTMLEdit( { attributes, setAttributes, isSelected } ) {\n\tconst [ isPreview, setIsPreview ] = useState();\n\tconst isDisabled = useContext( Disabled.Context );\n\n\tfunction switchToPreview() {\n\t\tsetIsPreview( true );\n\t}\n\n\tfunction switchToHTML() {\n\t\tsetIsPreview( false );\n\t}\n\n\treturn (\n\t\t<div { ...useBlockProps( { className: 'block-library-html__edit' } ) }>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tclassName=\"components-tab-button\"\n\t\t\t\t\t\tisPressed={ ! isPreview }\n\t\t\t\t\t\tonClick={ switchToHTML }\n\t\t\t\t\t>\n\t\t\t\t\t\tHTML\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tclassName=\"components-tab-button\"\n\t\t\t\t\t\tisPressed={ isPreview }\n\t\t\t\t\t\tonClick={ switchToPreview }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Preview' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t{ isPreview || isDisabled ? (\n\t\t\t\t<Preview\n\t\t\t\t\tcontent={ attributes.content }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<PlainText\n\t\t\t\t\tvalue={ attributes.content }\n\t\t\t\t\tonChange={ ( content ) => setAttributes( { content } ) }\n\t\t\t\t\tplaceholder={ __( 'Write HTML…' ) }\n\t\t\t\t\taria-label={ __( 'HTML' ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { RawHTML } from '@wordpress/element';\n\nexport default function save( { attributes } ) {\n\treturn <RawHTML>{ attributes.content }</RawHTML>;\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\nconst blockAttributes = {\n\talign: {\n\t\ttype: 'string',\n\t},\n\turl: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'img',\n\t\tattribute: 'src',\n\t},\n\talt: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'img',\n\t\tattribute: 'alt',\n\t\tdefault: '',\n\t},\n\tcaption: {\n\t\ttype: 'string',\n\t\tsource: 'html',\n\t\tselector: 'figcaption',\n\t},\n\ttitle: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'img',\n\t\tattribute: 'title',\n\t},\n\thref: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'figure > a',\n\t\tattribute: 'href',\n\t},\n\trel: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'figure > a',\n\t\tattribute: 'rel',\n\t},\n\tlinkClass: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'figure > a',\n\t\tattribute: 'class',\n\t},\n\tid: {\n\t\ttype: 'number',\n\t},\n\twidth: {\n\t\ttype: 'number',\n\t},\n\theight: {\n\t\ttype: 'number',\n\t},\n\tsizeSlug: {\n\t\ttype: 'string',\n\t},\n\tlinkDestination: {\n\t\ttype: 'string',\n\t},\n\tlinkTarget: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'figure > a',\n\t\tattribute: 'target',\n\t},\n};\n\nconst blockSupports = {\n\tanchor: true,\n\tcolor: {\n\t\t__experimentalDuotone: 'img',\n\t\ttext: false,\n\t\tbackground: false,\n\t},\n\t__experimentalBorder: {\n\t\tradius: true,\n\t\t__experimentalDefaultControls: {\n\t\t\tradius: true,\n\t\t},\n\t},\n};\n\nconst deprecated = [\n\t// The following deprecation moves existing border radius styles onto the\n\t// inner img element where new border block support styles must be applied.\n\t// It will also add a new `.has-custom-border` class for existing blocks\n\t// with border radii set. This class is required to improve caption position\n\t// and styling when an image within a gallery has a custom border or\n\t// rounded corners.\n\t//\n\t// See: https://github.com/WordPress/gutenberg/pull/31366/\n\t{\n\t\tattributes: blockAttributes,\n\t\tsupports: blockSupports,\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\turl,\n\t\t\t\talt,\n\t\t\t\tcaption,\n\t\t\t\talign,\n\t\t\t\thref,\n\t\t\t\trel,\n\t\t\t\tlinkClass,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tid,\n\t\t\t\tlinkTarget,\n\t\t\t\tsizeSlug,\n\t\t\t\ttitle,\n\t\t\t} = attributes;\n\n\t\t\tconst newRel = isEmpty( rel ) ? undefined : rel;\n\n\t\t\tconst classes = classnames( {\n\t\t\t\t[ `align${ align }` ]: align,\n\t\t\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t\t\t'is-resized': width || height,\n\t\t\t} );\n\n\t\t\tconst image = (\n\t\t\t\t<img\n\t\t\t\t\tsrc={ url }\n\t\t\t\t\talt={ alt }\n\t\t\t\t\tclassName={ id ? `wp-image-${ id }` : null }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height }\n\t\t\t\t\ttitle={ title }\n\t\t\t\t/>\n\t\t\t);\n\n\t\t\tconst figure = (\n\t\t\t\t<>\n\t\t\t\t\t{ href ? (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclassName={ linkClass }\n\t\t\t\t\t\t\thref={ href }\n\t\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\t\trel={ newRel }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ image }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\timage\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t);\n\n\t\t\treturn (\n\t\t\t\t<figure { ...useBlockProps.save( { className: classes } ) }>\n\t\t\t\t\t{ figure }\n\t\t\t\t</figure>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\ttitle: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tselector: 'img',\n\t\t\t\tattribute: 'title',\n\t\t\t},\n\t\t\tsizeSlug: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tsupports: blockSupports,\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\turl,\n\t\t\t\talt,\n\t\t\t\tcaption,\n\t\t\t\talign,\n\t\t\t\thref,\n\t\t\t\trel,\n\t\t\t\tlinkClass,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\tid,\n\t\t\t\tlinkTarget,\n\t\t\t\tsizeSlug,\n\t\t\t\ttitle,\n\t\t\t} = attributes;\n\n\t\t\tconst newRel = isEmpty( rel ) ? undefined : rel;\n\n\t\t\tconst classes = classnames( {\n\t\t\t\t[ `align${ align }` ]: align,\n\t\t\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t\t\t'is-resized': width || height,\n\t\t\t} );\n\n\t\t\tconst image = (\n\t\t\t\t<img\n\t\t\t\t\tsrc={ url }\n\t\t\t\t\talt={ alt }\n\t\t\t\t\tclassName={ id ? `wp-image-${ id }` : null }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height }\n\t\t\t\t\ttitle={ title }\n\t\t\t\t/>\n\t\t\t);\n\n\t\t\tconst figure = (\n\t\t\t\t<>\n\t\t\t\t\t{ href ? (\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclassName={ linkClass }\n\t\t\t\t\t\t\thref={ href }\n\t\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\t\trel={ newRel }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ image }\n\t\t\t\t\t\t</a>\n\t\t\t\t\t) : (\n\t\t\t\t\t\timage\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t);\n\n\t\t\tif ( 'left' === align || 'right' === align || 'center' === align ) {\n\t\t\t\treturn (\n\t\t\t\t\t<div { ...useBlockProps.save() }>\n\t\t\t\t\t\t<figure className={ classes }>{ figure }</figure>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<figure { ...useBlockProps.save( { className: classes } ) }>\n\t\t\t\t\t{ figure }\n\t\t\t\t</figure>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tattributes: blockAttributes,\n\t\tsave( { attributes } ) {\n\t\t\tconst { url, alt, caption, align, href, width, height, id } =\n\t\t\t\tattributes;\n\n\t\t\tconst classes = classnames( {\n\t\t\t\t[ `align${ align }` ]: align,\n\t\t\t\t'is-resized': width || height,\n\t\t\t} );\n\n\t\t\tconst image = (\n\t\t\t\t<img\n\t\t\t\t\tsrc={ url }\n\t\t\t\t\talt={ alt }\n\t\t\t\t\tclassName={ id ? `wp-image-${ id }` : null }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height }\n\t\t\t\t/>\n\t\t\t);\n\n\t\t\treturn (\n\t\t\t\t<figure className={ classes }>\n\t\t\t\t\t{ href ? <a href={ href }>{ image }</a> : image }\n\t\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</figure>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tattributes: blockAttributes,\n\t\tsave( { attributes } ) {\n\t\t\tconst { url, alt, caption, align, href, width, height, id } =\n\t\t\t\tattributes;\n\n\t\t\tconst image = (\n\t\t\t\t<img\n\t\t\t\t\tsrc={ url }\n\t\t\t\t\talt={ alt }\n\t\t\t\t\tclassName={ id ? `wp-image-${ id }` : null }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height }\n\t\t\t\t/>\n\t\t\t);\n\n\t\t\treturn (\n\t\t\t\t<figure className={ align ? `align${ align }` : null }>\n\t\t\t\t\t{ href ? <a href={ href }>{ image }</a> : image }\n\t\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</figure>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tattributes: blockAttributes,\n\t\tsave( { attributes } ) {\n\t\t\tconst { url, alt, caption, align, href, width, height } =\n\t\t\t\tattributes;\n\t\t\tconst extraImageProps = width || height ? { width, height } : {};\n\t\t\tconst image = (\n\t\t\t\t<img src={ url } alt={ alt } { ...extraImageProps } />\n\t\t\t);\n\n\t\t\tlet figureStyle = {};\n\n\t\t\tif ( width ) {\n\t\t\t\tfigureStyle = { width };\n\t\t\t} else if ( align === 'left' || align === 'right' ) {\n\t\t\t\tfigureStyle = { maxWidth: '50%' };\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<figure\n\t\t\t\t\tclassName={ align ? `align${ align }` : null }\n\t\t\t\t\tstyle={ figureStyle }\n\t\t\t\t>\n\t\t\t\t\t{ href ? <a href={ href }>{ image }</a> : image }\n\t\t\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</figure>\n\t\t\t);\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst crop = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M16.5 7.8v7H18v-7c0-1-.8-1.8-1.8-1.8h-7v1.5h7c.2 0 .3.1.3.3zm-8.7 8.7c-.1 0-.2-.1-.2-.2V2H6v4H2v1.5h4v8.8c0 1 .8 1.8 1.8 1.8h8.8v4H18v-4h4v-1.5H7.8z\" />\n\t</SVG>\n);\n\nexport default crop;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst upload = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z\" />\n\t</SVG>\n);\n\nexport default upload;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst overlayText = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12-9.8c.4 0 .8-.3.9-.7l1.1-3h3.6l.5 1.7h1.9L13 9h-2.2l-3.4 9.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v12H20V6c0-1.1-.9-2-2-2zm-6 7l1.4 3.9h-2.7L12 11z\" />\n\t</SVG>\n);\n\nexport default overlayText;\n","/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\n\nexport default function useClientWidth( ref, dependencies ) {\n\tconst [ clientWidth, setClientWidth ] = useState();\n\n\tfunction calculateClientWidth() {\n\t\tsetClientWidth( ref.current?.clientWidth );\n\t}\n\n\tuseEffect( calculateClientWidth, dependencies );\n\tuseEffect( () => {\n\t\tconst { defaultView } = ref.current.ownerDocument;\n\n\t\tdefaultView.addEventListener( 'resize', calculateClientWidth );\n\n\t\treturn () => {\n\t\t\tdefaultView.removeEventListener( 'resize', calculateClientWidth );\n\t\t};\n\t}, [] );\n\n\treturn clientWidth;\n}\n","/**\n * External dependencies\n */\nimport { get, filter, isEmpty, map, pick, includes } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { isBlobURL } from '@wordpress/blob';\nimport {\n\tExternalLink,\n\tPanelBody,\n\tResizableBox,\n\tSpinner,\n\tTextareaControl,\n\tTextControl,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { useViewportMatch, usePrevious } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\t__experimentalImageSizeControl as ImageSizeControl,\n\t__experimentalImageURLInputUI as ImageURLInputUI,\n\tMediaReplaceFlow,\n\tstore as blockEditorStore,\n\tBlockAlignmentControl,\n\t__experimentalImageEditor as ImageEditor,\n\t__experimentalImageEditingProvider as ImageEditingProvider,\n\t__experimentalGetElementClassName,\n\t__experimentalUseBorderProps as useBorderProps,\n} from '@wordpress/block-editor';\nimport { useEffect, useMemo, useState, useRef } from '@wordpress/element';\nimport { __, sprintf, isRTL } from '@wordpress/i18n';\nimport { getFilename } from '@wordpress/url';\nimport {\n\tcreateBlock,\n\tgetDefaultBlockName,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport { crop, overlayText, upload } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport useClientWidth from './use-client-width';\nimport { isExternalImage } from './edit';\n\n/**\n * Module constants\n */\nimport { MIN_SIZE, ALLOWED_MEDIA_TYPES } from './constants';\n\nexport default function Image( {\n\ttemporaryURL,\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tinsertBlocksAfter,\n\tonReplace,\n\tonSelectImage,\n\tonSelectURL,\n\tonUploadError,\n\tcontainerRef,\n\tcontext,\n\tclientId,\n\tisContentLocked,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\talign,\n\t\tid,\n\t\thref,\n\t\trel,\n\t\tlinkClass,\n\t\tlinkDestination,\n\t\ttitle,\n\t\twidth,\n\t\theight,\n\t\tlinkTarget,\n\t\tsizeSlug,\n\t} = attributes;\n\tconst imageRef = useRef();\n\tconst captionRef = useRef();\n\tconst prevUrl = usePrevious( url );\n\tconst { allowResize = true } = context;\n\tconst { getBlock } = useSelect( blockEditorStore );\n\n\tconst { image, multiImageSelection } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getMedia } = select( coreStore );\n\t\t\tconst { getMultiSelectedBlockClientIds, getBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst multiSelectedClientIds = getMultiSelectedBlockClientIds();\n\t\t\treturn {\n\t\t\t\timage:\n\t\t\t\t\tid && isSelected\n\t\t\t\t\t\t? getMedia( id, { context: 'view' } )\n\t\t\t\t\t\t: null,\n\t\t\t\tmultiImageSelection:\n\t\t\t\t\tmultiSelectedClientIds.length &&\n\t\t\t\t\tmultiSelectedClientIds.every(\n\t\t\t\t\t\t( _clientId ) =>\n\t\t\t\t\t\t\tgetBlockName( _clientId ) === 'core/image'\n\t\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ id, isSelected, clientId ]\n\t);\n\tconst { canInsertCover, imageEditing, imageSizes, maxWidth, mediaUpload } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockRootClientId,\n\t\t\t\t\tgetSettings,\n\t\t\t\t\tcanInsertBlockType,\n\t\t\t\t} = select( blockEditorStore );\n\n\t\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\t\tconst settings = pick( getSettings(), [\n\t\t\t\t\t'imageEditing',\n\t\t\t\t\t'imageSizes',\n\t\t\t\t\t'maxWidth',\n\t\t\t\t\t'mediaUpload',\n\t\t\t\t] );\n\n\t\t\t\treturn {\n\t\t\t\t\t...settings,\n\t\t\t\t\tcanInsertCover: canInsertBlockType(\n\t\t\t\t\t\t'core/cover',\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\n\tconst { replaceBlocks, toggleSelection } = useDispatch( blockEditorStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isWideAligned = includes( [ 'wide', 'full' ], align );\n\tconst [\n\t\t{ loadedNaturalWidth, loadedNaturalHeight },\n\t\tsetLoadedNaturalSize,\n\t] = useState( {} );\n\tconst [ isEditingImage, setIsEditingImage ] = useState( false );\n\tconst [ externalBlob, setExternalBlob ] = useState();\n\tconst clientWidth = useClientWidth( containerRef, [ align ] );\n\tconst isResizable =\n\t\tallowResize &&\n\t\t! isContentLocked &&\n\t\t! ( isWideAligned && isLargeViewport );\n\tconst imageSizeOptions = map(\n\t\tfilter( imageSizes, ( { slug } ) =>\n\t\t\tget( image, [ 'media_details', 'sizes', slug, 'source_url' ] )\n\t\t),\n\t\t( { name, slug } ) => ( { value: slug, label: name } )\n\t);\n\n\t// If an image is externally hosted, try to fetch the image data. This may\n\t// fail if the image host doesn't allow CORS with the domain. If it works,\n\t// we can enable a button in the toolbar to upload the image.\n\tuseEffect( () => {\n\t\tif ( ! isExternalImage( id, url ) || ! isSelected || externalBlob ) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow\n\t\t\t.fetch( url )\n\t\t\t.then( ( response ) => response.blob() )\n\t\t\t.then( ( blob ) => setExternalBlob( blob ) )\n\t\t\t// Do nothing, cannot upload.\n\t\t\t.catch( () => {} );\n\t}, [ id, url, isSelected, externalBlob ] );\n\n\t// Focus the caption after inserting an image from the placeholder. This is\n\t// done to preserve the behaviour of focussing the first tabbable element\n\t// when a block is mounted. Previously, the image block would remount when\n\t// the placeholder is removed. Maybe this behaviour could be removed.\n\tuseEffect( () => {\n\t\tif ( url && ! prevUrl && isSelected ) {\n\t\t\tcaptionRef.current.focus();\n\t\t}\n\t}, [ url, prevUrl ] );\n\n\t// Get naturalWidth and naturalHeight from image ref, and fall back to loaded natural\n\t// width and height. This resolves an issue in Safari where the loaded natural\n\t// width and height is otherwise lost when switching between alignments.\n\t// See: https://github.com/WordPress/gutenberg/pull/37210.\n\tconst { naturalWidth, naturalHeight } = useMemo( () => {\n\t\treturn {\n\t\t\tnaturalWidth:\n\t\t\t\timageRef.current?.naturalWidth ||\n\t\t\t\tloadedNaturalWidth ||\n\t\t\t\tundefined,\n\t\t\tnaturalHeight:\n\t\t\t\timageRef.current?.naturalHeight ||\n\t\t\t\tloadedNaturalHeight ||\n\t\t\t\tundefined,\n\t\t};\n\t}, [\n\t\tloadedNaturalWidth,\n\t\tloadedNaturalHeight,\n\t\timageRef.current?.complete,\n\t] );\n\n\tfunction onResizeStart() {\n\t\ttoggleSelection( false );\n\t}\n\n\tfunction onResizeStop() {\n\t\ttoggleSelection( true );\n\t}\n\n\tfunction onImageError() {\n\t\t// Check if there's an embed block that handles this URL, e.g., instagram URL.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/11472\n\t\tconst embedBlock = createUpgradedEmbedBlock( { attributes: { url } } );\n\n\t\tif ( undefined !== embedBlock ) {\n\t\t\tonReplace( embedBlock );\n\t\t}\n\t}\n\n\tfunction onSetHref( props ) {\n\t\tsetAttributes( props );\n\t}\n\n\tfunction onSetTitle( value ) {\n\t\t// This is the HTML title attribute, separate from the media object\n\t\t// title.\n\t\tsetAttributes( { title: value } );\n\t}\n\n\tfunction updateAlt( newAlt ) {\n\t\tsetAttributes( { alt: newAlt } );\n\t}\n\n\tfunction updateImage( newSizeSlug ) {\n\t\tconst newUrl = get( image, [\n\t\t\t'media_details',\n\t\t\t'sizes',\n\t\t\tnewSizeSlug,\n\t\t\t'source_url',\n\t\t] );\n\t\tif ( ! newUrl ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\turl: newUrl,\n\t\t\twidth: undefined,\n\t\t\theight: undefined,\n\t\t\tsizeSlug: newSizeSlug,\n\t\t} );\n\t}\n\n\tfunction uploadExternal() {\n\t\tmediaUpload( {\n\t\t\tfilesList: [ externalBlob ],\n\t\t\tonFileChange( [ img ] ) {\n\t\t\t\tonSelectImage( img );\n\n\t\t\t\tif ( isBlobURL( img.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetExternalBlob();\n\t\t\t\tcreateSuccessNotice( __( 'Image uploaded.' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t},\n\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\tonError( message ) {\n\t\t\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\t\t},\n\t\t} );\n\t}\n\n\tfunction updateAlignment( nextAlign ) {\n\t\tconst extraUpdatedAttributes = [ 'wide', 'full' ].includes( nextAlign )\n\t\t\t? { width: undefined, height: undefined }\n\t\t\t: {};\n\t\tsetAttributes( {\n\t\t\t...extraUpdatedAttributes,\n\t\t\talign: nextAlign,\n\t\t} );\n\t}\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsEditingImage( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst canEditImage = id && naturalWidth && naturalHeight && imageEditing;\n\tconst allowCrop = ! multiImageSelection && canEditImage && ! isEditingImage;\n\n\tfunction switchToCover() {\n\t\treplaceBlocks(\n\t\t\tclientId,\n\t\t\tswitchToBlockType( getBlock( clientId ), 'core/cover' )\n\t\t);\n\t}\n\n\tconst controls = (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t{ ! isContentLocked && (\n\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\tvalue={ align }\n\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! multiImageSelection && ! isEditingImage && (\n\t\t\t\t\t<ImageURLInputUI\n\t\t\t\t\t\turl={ href || '' }\n\t\t\t\t\t\tonChangeUrl={ onSetHref }\n\t\t\t\t\t\tlinkDestination={ linkDestination }\n\t\t\t\t\t\tmediaUrl={ ( image && image.source_url ) || url }\n\t\t\t\t\t\tmediaLink={ image && image.link }\n\t\t\t\t\t\tlinkTarget={ linkTarget }\n\t\t\t\t\t\tlinkClass={ linkClass }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ allowCrop && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ () => setIsEditingImage( true ) }\n\t\t\t\t\t\ticon={ crop }\n\t\t\t\t\t\tlabel={ __( 'Crop' ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ externalBlob && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ uploadExternal }\n\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\tlabel={ __( 'Upload external image' ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! multiImageSelection && canInsertCover && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon={ overlayText }\n\t\t\t\t\t\tlabel={ __( 'Add text over image' ) }\n\t\t\t\t\t\tonClick={ switchToCover }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t{ ! multiImageSelection && ! isEditingImage && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\tmediaURL={ url }\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\tonSelectURL={ onSelectURL }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t{ ! multiImageSelection && (\n\t\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\t\tlabel={ __( 'Alt text (alternative text)' ) }\n\t\t\t\t\t\t\tvalue={ alt }\n\t\t\t\t\t\t\tonChange={ updateAlt }\n\t\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<ExternalLink href=\"https://www.w3.org/WAI/tutorials/images/decision-tree\">\n\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the image'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t'Leave empty if the image is purely decorative.'\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}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<ImageSizeControl\n\t\t\t\t\t\tonChangeImage={ updateImage }\n\t\t\t\t\t\tonChange={ ( value ) => setAttributes( value ) }\n\t\t\t\t\t\tslug={ sizeSlug }\n\t\t\t\t\t\twidth={ width }\n\t\t\t\t\t\theight={ height }\n\t\t\t\t\t\timageSizeOptions={ imageSizeOptions }\n\t\t\t\t\t\tisResizable={ isResizable }\n\t\t\t\t\t\timageWidth={ naturalWidth }\n\t\t\t\t\t\timageHeight={ naturalHeight }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Title attribute' ) }\n\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\tonChange={ onSetTitle }\n\t\t\t\t\thelp={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Describe the role of this image on the page.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<ExternalLink href=\"https://www.w3.org/TR/html52/dom.html#the-title-attribute\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'(Note: many devices and browsers do not display this text.)'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n\n\tconst filename = getFilename( url );\n\tlet defaultedAlt;\n\n\tif ( alt ) {\n\t\tdefaultedAlt = alt;\n\t} else if ( filename ) {\n\t\tdefaultedAlt = sprintf(\n\t\t\t/* translators: %s: file name */\n\t\t\t__( 'This image has an empty alt attribute; its file name is %s' ),\n\t\t\tfilename\n\t\t);\n\t} else {\n\t\tdefaultedAlt = __( 'This image has an empty alt attribute' );\n\t}\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst isRounded = attributes.className?.includes( 'is-style-rounded' );\n\tconst hasCustomBorder =\n\t\t!! borderProps.className || ! isEmpty( borderProps.style );\n\n\tlet img = (\n\t\t// Disable reason: Image itself is not meant to be interactive, but\n\t\t// should direct focus to block.\n\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t<>\n\t\t\t<img\n\t\t\t\tsrc={ temporaryURL || url }\n\t\t\t\talt={ defaultedAlt }\n\t\t\t\tonError={ () => onImageError() }\n\t\t\t\tonLoad={ ( event ) => {\n\t\t\t\t\tsetLoadedNaturalSize( {\n\t\t\t\t\t\tloadedNaturalWidth: event.target?.naturalWidth,\n\t\t\t\t\t\tloadedNaturalHeight: event.target?.naturalHeight,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tref={ imageRef }\n\t\t\t\tclassName={ borderProps.className }\n\t\t\t\tstyle={ borderProps.style }\n\t\t\t/>\n\t\t\t{ temporaryURL && <Spinner /> }\n\t\t</>\n\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t);\n\n\tlet imageWidthWithinContainer;\n\tlet imageHeightWithinContainer;\n\n\tif ( clientWidth && naturalWidth && naturalHeight ) {\n\t\tconst exceedMaxWidth = naturalWidth > clientWidth;\n\t\tconst ratio = naturalHeight / naturalWidth;\n\t\timageWidthWithinContainer = exceedMaxWidth ? clientWidth : naturalWidth;\n\t\timageHeightWithinContainer = exceedMaxWidth\n\t\t\t? clientWidth * ratio\n\t\t\t: naturalHeight;\n\t}\n\n\tif ( canEditImage && isEditingImage ) {\n\t\timg = (\n\t\t\t<ImageEditor\n\t\t\t\tborderProps={ isRounded ? undefined : borderProps }\n\t\t\t\turl={ url }\n\t\t\t\twidth={ width }\n\t\t\t\theight={ height }\n\t\t\t\tclientWidth={ clientWidth }\n\t\t\t\tnaturalHeight={ naturalHeight }\n\t\t\t\tnaturalWidth={ naturalWidth }\n\t\t\t/>\n\t\t);\n\t} else if ( ! isResizable || ! imageWidthWithinContainer ) {\n\t\timg = <div style={ { width, height } }>{ img }</div>;\n\t} else {\n\t\tconst currentWidth = width || imageWidthWithinContainer;\n\t\tconst currentHeight = height || imageHeightWithinContainer;\n\n\t\tconst ratio = naturalWidth / naturalHeight;\n\t\tconst minWidth =\n\t\t\tnaturalWidth < naturalHeight ? MIN_SIZE : MIN_SIZE * ratio;\n\t\tconst minHeight =\n\t\t\tnaturalHeight < naturalWidth ? MIN_SIZE : MIN_SIZE / ratio;\n\n\t\t// With the current implementation of ResizableBox, an image needs an\n\t\t// explicit pixel value for the max-width. In absence of being able to\n\t\t// set the content-width, this max-width is currently dictated by the\n\t\t// vanilla editor style. The following variable adds a buffer to this\n\t\t// vanilla style, so 3rd party themes have some wiggleroom. This does,\n\t\t// in most cases, allow you to scale the image beyond the width of the\n\t\t// main column, though not infinitely.\n\t\t// @todo It would be good to revisit this once a content-width variable\n\t\t// becomes available.\n\t\tconst maxWidthBuffer = maxWidth * 2.5;\n\n\t\tlet showRightHandle = false;\n\t\tlet showLeftHandle = false;\n\n\t\t/* eslint-disable no-lonely-if */\n\t\t// See https://github.com/WordPress/gutenberg/issues/7584.\n\t\tif ( align === 'center' ) {\n\t\t\t// When the image is centered, show both handles.\n\t\t\tshowRightHandle = true;\n\t\t\tshowLeftHandle = true;\n\t\t} else if ( isRTL() ) {\n\t\t\t// In RTL mode the image is on the right by default.\n\t\t\t// Show the right handle and hide the left handle only when it is\n\t\t\t// aligned left. Otherwise always show the left handle.\n\t\t\tif ( align === 'left' ) {\n\t\t\t\tshowRightHandle = true;\n\t\t\t} else {\n\t\t\t\tshowLeftHandle = true;\n\t\t\t}\n\t\t} else {\n\t\t\t// Show the left handle and hide the right handle only when the\n\t\t\t// image is aligned right. Otherwise always show the right handle.\n\t\t\tif ( align === 'right' ) {\n\t\t\t\tshowLeftHandle = true;\n\t\t\t} else {\n\t\t\t\tshowRightHandle = true;\n\t\t\t}\n\t\t}\n\t\t/* eslint-enable no-lonely-if */\n\n\t\timg = (\n\t\t\t<ResizableBox\n\t\t\t\tsize={ {\n\t\t\t\t\twidth: width ?? 'auto',\n\t\t\t\t\theight: height && ! hasCustomBorder ? height : 'auto',\n\t\t\t\t} }\n\t\t\t\tshowHandle={ isSelected }\n\t\t\t\tminWidth={ minWidth }\n\t\t\t\tmaxWidth={ maxWidthBuffer }\n\t\t\t\tminHeight={ minHeight }\n\t\t\t\tmaxHeight={ maxWidthBuffer / ratio }\n\t\t\t\tlockAspectRatio\n\t\t\t\tenable={ {\n\t\t\t\t\ttop: false,\n\t\t\t\t\tright: showRightHandle,\n\t\t\t\t\tbottom: true,\n\t\t\t\t\tleft: showLeftHandle,\n\t\t\t\t} }\n\t\t\t\tonResizeStart={ onResizeStart }\n\t\t\t\tonResizeStop={ ( event, direction, elt, delta ) => {\n\t\t\t\t\tonResizeStop();\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\twidth: parseInt( currentWidth + delta.width, 10 ),\n\t\t\t\t\t\theight: parseInt( currentHeight + delta.height, 10 ),\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ img }\n\t\t\t</ResizableBox>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ImageEditingProvider\n\t\t\tid={ id }\n\t\t\turl={ url }\n\t\t\tnaturalWidth={ naturalWidth }\n\t\t\tnaturalHeight={ naturalHeight }\n\t\t\tclientWidth={ clientWidth }\n\t\t\tonSaveImage={ ( imageAttributes ) =>\n\t\t\t\tsetAttributes( imageAttributes )\n\t\t\t}\n\t\t\tisEditing={ isEditingImage }\n\t\t\tonFinishEditing={ () => setIsEditingImage( false ) }\n\t\t>\n\t\t\t{ /* Hide controls during upload to avoid component remount,\n\t\t\t\twhich causes duplicated image upload. */ }\n\t\t\t{ ! temporaryURL && controls }\n\t\t\t{ img }\n\t\t\t{ ( ! RichText.isEmpty( caption ) || isSelected ) && (\n\t\t\t\t<RichText\n\t\t\t\t\tclassName={ __experimentalGetElementClassName( 'caption' ) }\n\t\t\t\t\tref={ captionRef }\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\taria-label={ __( 'Image caption text' ) }\n\t\t\t\t\tplaceholder={ __( 'Add caption' ) }\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { caption: value } )\n\t\t\t\t\t}\n\t\t\t\t\tinlineToolbar\n\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\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</ImageEditingProvider>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { get, isEmpty, pick } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockAlignmentControl,\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { image as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport Image from './image';\n\n// Much of this description is duplicated from MediaPlaceholder.\nconst placeholder = ( content ) => {\n\treturn (\n\t\t<Placeholder\n\t\t\tclassName=\"block-editor-media-placeholder\"\n\t\t\twithIllustration={ true }\n\t\t\ticon={ icon }\n\t\t\tlabel={ __( 'Image' ) }\n\t\t\tinstructions={ __(\n\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t) }\n\t\t>\n\t\t\t{ content }\n\t\t</Placeholder>\n\t);\n};\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = pick( image, [ 'alt', 'id', 'link', 'caption' ] );\n\timageProps.url =\n\t\tget( image, [ 'sizes', size, 'url' ] ) ||\n\t\tget( image, [ 'media_details', 'sizes', size, 'source_url' ] ) ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id  The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id  The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated default image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} defaultSize\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasDefaultSize( image, defaultSize ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ defaultSize ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ defaultSize ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\talign,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst ref = useRef();\n\tconst { imageDefaultSize, mediaUpload, isContentLocked } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, __unstableGetContentLockingParent } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst settings = getSettings();\n\t\t\treturn {\n\t\t\t\timageDefaultSize: settings.imageDefaultSize,\n\t\t\t\tmediaUpload: settings.mediaUpload,\n\t\t\t\tisContentLocked:\n\t\t\t\t\t!! __unstableGetContentLockingParent( clientId ),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, imageDefaultSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! get( mediaAttributes, [ 'caption' ] ) ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\t// Fallback to size \"full\" if there's no default image size.\n\t\t\t\t// It means the image is smaller, and the block will use a full-size URL.\n\t\t\t\tsizeSlug: hasDefaultSize( media, imageDefaultSize )\n\t\t\t\t\t? imageDefaultSize\n\t\t\t\t\t: 'full',\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Image Size\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\tsizeSlug: imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction updateAlignment( nextAlign ) {\n\t\tconst extraUpdatedAttributes = [ 'wide', 'full' ].includes( nextAlign )\n\t\t\t? { width: undefined, height: undefined }\n\t\t\t: {};\n\t\tsetAttributes( {\n\t\t\t...extraUpdatedAttributes,\n\t\t\talign: nextAlign,\n\t\t} );\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className || ! isEmpty( borderProps.style ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t{ ( temporaryURL || url ) && (\n\t\t\t\t<Image\n\t\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\t\tcontainerRef={ ref }\n\t\t\t\t\tcontext={ context }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisContentLocked={ isContentLocked }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! url && ! isContentLocked && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\tvalue={ align }\n\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n","/**\n * External dependencies\n */\nimport { every } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createBlobURL } from '@wordpress/blob';\nimport { createBlock, getBlockAttributes } from '@wordpress/blocks';\nimport { dispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { __ } from '@wordpress/i18n';\n\nexport function stripFirstImage( attributes, { shortcode } ) {\n\tconst { body } = document.implementation.createHTMLDocument( '' );\n\n\tbody.innerHTML = shortcode.content;\n\n\tlet nodeToRemove = body.querySelector( 'img' );\n\n\t// If an image has parents, find the topmost node to remove.\n\twhile (\n\t\tnodeToRemove &&\n\t\tnodeToRemove.parentNode &&\n\t\tnodeToRemove.parentNode !== body\n\t) {\n\t\tnodeToRemove = nodeToRemove.parentNode;\n\t}\n\n\tif ( nodeToRemove ) {\n\t\tnodeToRemove.parentNode.removeChild( nodeToRemove );\n\t}\n\n\treturn body.innerHTML.trim();\n}\n\nfunction getFirstAnchorAttributeFormHTML( html, attributeName ) {\n\tconst { body } = document.implementation.createHTMLDocument( '' );\n\n\tbody.innerHTML = html;\n\n\tconst { firstElementChild } = body;\n\n\tif ( firstElementChild && firstElementChild.nodeName === 'A' ) {\n\t\treturn firstElementChild.getAttribute( attributeName ) || undefined;\n\t}\n}\n\nconst imageSchema = {\n\timg: {\n\t\tattributes: [ 'src', 'alt', 'title' ],\n\t\tclasses: [\n\t\t\t'alignleft',\n\t\t\t'aligncenter',\n\t\t\t'alignright',\n\t\t\t'alignnone',\n\t\t\t/^wp-image-\\d+$/,\n\t\t],\n\t},\n};\n\nconst schema = ( { phrasingContentSchema } ) => ( {\n\tfigure: {\n\t\trequire: [ 'img' ],\n\t\tchildren: {\n\t\t\t...imageSchema,\n\t\t\ta: {\n\t\t\t\tattributes: [ 'href', 'rel', 'target' ],\n\t\t\t\tchildren: imageSchema,\n\t\t\t},\n\t\t\tfigcaption: {\n\t\t\t\tchildren: phrasingContentSchema,\n\t\t\t},\n\t\t},\n\t},\n} );\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tisMatch: ( node ) =>\n\t\t\t\tnode.nodeName === 'FIGURE' && !! node.querySelector( 'img' ),\n\t\t\tschema,\n\t\t\ttransform: ( node ) => {\n\t\t\t\t// Search both figure and image classes. Alignment could be\n\t\t\t\t// set on either. ID is set on the image.\n\t\t\t\tconst className =\n\t\t\t\t\tnode.className +\n\t\t\t\t\t' ' +\n\t\t\t\t\tnode.querySelector( 'img' ).className;\n\t\t\t\tconst alignMatches =\n\t\t\t\t\t/(?:^|\\s)align(left|center|right)(?:$|\\s)/.exec(\n\t\t\t\t\t\tclassName\n\t\t\t\t\t);\n\t\t\t\tconst anchor = node.id === '' ? undefined : node.id;\n\t\t\t\tconst align = alignMatches ? alignMatches[ 1 ] : undefined;\n\t\t\t\tconst idMatches = /(?:^|\\s)wp-image-(\\d+)(?:$|\\s)/.exec(\n\t\t\t\t\tclassName\n\t\t\t\t);\n\t\t\t\tconst id = idMatches ? Number( idMatches[ 1 ] ) : undefined;\n\t\t\t\tconst anchorElement = node.querySelector( 'a' );\n\t\t\t\tconst linkDestination =\n\t\t\t\t\tanchorElement && anchorElement.href ? 'custom' : undefined;\n\t\t\t\tconst href =\n\t\t\t\t\tanchorElement && anchorElement.href\n\t\t\t\t\t\t? anchorElement.href\n\t\t\t\t\t\t: undefined;\n\t\t\t\tconst rel =\n\t\t\t\t\tanchorElement && anchorElement.rel\n\t\t\t\t\t\t? anchorElement.rel\n\t\t\t\t\t\t: undefined;\n\t\t\t\tconst linkClass =\n\t\t\t\t\tanchorElement && anchorElement.className\n\t\t\t\t\t\t? anchorElement.className\n\t\t\t\t\t\t: undefined;\n\t\t\t\tconst attributes = getBlockAttributes(\n\t\t\t\t\t'core/image',\n\t\t\t\t\tnode.outerHTML,\n\t\t\t\t\t{\n\t\t\t\t\t\talign,\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlinkDestination,\n\t\t\t\t\t\thref,\n\t\t\t\t\t\trel,\n\t\t\t\t\t\tlinkClass,\n\t\t\t\t\t\tanchor,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn createBlock( 'core/image', attributes );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// Note: when dragging and dropping multiple files onto a gallery this overrides the\n\t\t\t// gallery transform in order to add new images to the gallery instead of\n\t\t\t// creating a new gallery.\n\t\t\ttype: 'files',\n\t\t\tisMatch( files ) {\n\t\t\t\t// The following check is intended to catch non-image files when dropped together with images.\n\t\t\t\tif (\n\t\t\t\t\tfiles.some(\n\t\t\t\t\t\t( file ) => file.type.indexOf( 'image/' ) === 0\n\t\t\t\t\t) &&\n\t\t\t\t\tfiles.some(\n\t\t\t\t\t\t( file ) => file.type.indexOf( 'image/' ) !== 0\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tconst { createErrorNotice } = dispatch( noticesStore );\n\t\t\t\t\tcreateErrorNotice(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'If uploading to a gallery all files need to be image formats'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: 'gallery-transform-invalid-file',\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn every(\n\t\t\t\t\tfiles,\n\t\t\t\t\t( file ) => file.type.indexOf( 'image/' ) === 0\n\t\t\t\t);\n\t\t\t},\n\t\t\ttransform( files ) {\n\t\t\t\tconst blocks = files.map( ( file ) => {\n\t\t\t\t\treturn createBlock( 'core/image', {\n\t\t\t\t\t\turl: createBlobURL( file ),\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t\treturn blocks;\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'shortcode',\n\t\t\ttag: 'caption',\n\t\t\tattributes: {\n\t\t\t\turl: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tattribute: 'src',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t},\n\t\t\t\talt: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\tattribute: 'alt',\n\t\t\t\t\tselector: 'img',\n\t\t\t\t},\n\t\t\t\tcaption: {\n\t\t\t\t\tshortcode: stripFirstImage,\n\t\t\t\t},\n\t\t\t\thref: {\n\t\t\t\t\tshortcode: ( attributes, { shortcode } ) => {\n\t\t\t\t\t\treturn getFirstAnchorAttributeFormHTML(\n\t\t\t\t\t\t\tshortcode.content,\n\t\t\t\t\t\t\t'href'\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\trel: {\n\t\t\t\t\tshortcode: ( attributes, { shortcode } ) => {\n\t\t\t\t\t\treturn getFirstAnchorAttributeFormHTML(\n\t\t\t\t\t\t\tshortcode.content,\n\t\t\t\t\t\t\t'rel'\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlinkClass: {\n\t\t\t\t\tshortcode: ( attributes, { shortcode } ) => {\n\t\t\t\t\t\treturn getFirstAnchorAttributeFormHTML(\n\t\t\t\t\t\t\tshortcode.content,\n\t\t\t\t\t\t\t'class'\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tid: {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tshortcode: ( { named: { id } } ) => {\n\t\t\t\t\t\tif ( ! id ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn parseInt( id.replace( 'attachment_', '' ), 10 );\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\talign: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( { named: { align = 'alignnone' } } ) => {\n\t\t\t\t\t\treturn align.replace( 'align', '' );\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { image 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\tsizeSlug: 'large',\n\t\t\turl: 'https://s.w.org/images/core/5.3/MtBlanc1.jpg',\n\t\t\t// translators: Caption accompanying an image of the Mont Blanc, which serves as an example for the Image block.\n\t\t\tcaption: __( 'Mont Blanc appears—still, snowy, and serene.' ),\n\t\t},\n\t},\n\t__experimentalLabel( attributes, { context } ) {\n\t\tif ( context === 'accessibility' ) {\n\t\t\tconst { caption, alt, url } = attributes;\n\n\t\t\tif ( ! url ) {\n\t\t\t\treturn __( 'Empty' );\n\t\t\t}\n\n\t\t\tif ( ! alt ) {\n\t\t\t\treturn caption || '';\n\t\t\t}\n\n\t\t\t// This is intended to be read by a screen reader.\n\t\t\t// A period simply means a pause, no need to translate it.\n\t\t\treturn alt + ( caption ? '. ' + caption : '' );\n\t\t}\n\t},\n\tgetEditWrapperProps( attributes ) {\n\t\treturn {\n\t\t\t'data-align': attributes.align,\n\t\t};\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetElementClassName,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\turl,\n\t\talt,\n\t\tcaption,\n\t\talign,\n\t\thref,\n\t\trel,\n\t\tlinkClass,\n\t\twidth,\n\t\theight,\n\t\tid,\n\t\tlinkTarget,\n\t\tsizeSlug,\n\t\ttitle,\n\t} = attributes;\n\n\tconst newRel = isEmpty( rel ) ? undefined : rel;\n\tconst borderProps = getBorderClassesAndStyles( attributes );\n\n\tconst classes = classnames( {\n\t\t[ `align${ align }` ]: align,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'is-resized': width || height,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className || ! isEmpty( borderProps.style ),\n\t} );\n\n\tconst imageClasses = classnames( borderProps.className, {\n\t\t[ `wp-image-${ id }` ]: !! id,\n\t} );\n\n\tconst image = (\n\t\t<img\n\t\t\tsrc={ url }\n\t\t\talt={ alt }\n\t\t\tclassName={ imageClasses || undefined }\n\t\t\tstyle={ borderProps.style }\n\t\t\twidth={ width }\n\t\t\theight={ height }\n\t\t\ttitle={ title }\n\t\t/>\n\t);\n\n\tconst figure = (\n\t\t<>\n\t\t\t{ href ? (\n\t\t\t\t<a\n\t\t\t\t\tclassName={ linkClass }\n\t\t\t\t\thref={ href }\n\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\trel={ newRel }\n\t\t\t\t>\n\t\t\t\t\t{ image }\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\timage\n\t\t\t) }\n\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t<RichText.Content\n\t\t\t\t\tclassName={ __experimentalGetElementClassName( 'caption' ) }\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n\n\treturn (\n\t\t<figure { ...useBlockProps.save( { className: classes } ) }>\n\t\t\t{ figure }\n\t\t</figure>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst comment = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M18 4H6c-1.1 0-2 .9-2 2v12.9c0 .6.5 1.1 1.1 1.1.3 0 .5-.1.8-.3L8.5 17H18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5H7.9l-2.4 2.4V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v9z\" />\n\t</SVG>\n);\n\nexport default comment;\n","/**\n * WordPress dependencies\n */\nimport { comment 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;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {},\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { InspectorControls, useBlockProps } from '@wordpress/block-editor';\nimport {\n\tDisabled,\n\tPanelBody,\n\tRangeControl,\n\tToggleControl,\n} from '@wordpress/components';\nimport ServerSideRender from '@wordpress/server-side-render';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Minimum number of comments a user can show using this block.\n *\n * @type {number}\n */\nconst MIN_COMMENTS = 1;\n/**\n * Maximum number of comments a user can show using this block.\n *\n * @type {number}\n */\nconst MAX_COMMENTS = 100;\n\nexport default function LatestComments( { attributes, setAttributes } ) {\n\tconst { commentsToShow, displayAvatar, displayDate, displayExcerpt } =\n\t\tattributes;\n\n\treturn (\n\t\t<div { ...useBlockProps() }>\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\tlabel={ __( 'Display avatar' ) }\n\t\t\t\t\t\tchecked={ displayAvatar }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { displayAvatar: ! displayAvatar } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display date' ) }\n\t\t\t\t\t\tchecked={ displayDate }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { displayDate: ! displayDate } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display excerpt' ) }\n\t\t\t\t\t\tchecked={ displayExcerpt }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayExcerpt: ! displayExcerpt,\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\t<RangeControl\n\t\t\t\t\t\tlabel={ __( 'Number of comments' ) }\n\t\t\t\t\t\tvalue={ commentsToShow }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { commentsToShow: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ MIN_COMMENTS }\n\t\t\t\t\t\tmax={ MAX_COMMENTS }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<Disabled>\n\t\t\t\t<ServerSideRender\n\t\t\t\t\tblock=\"core/latest-comments\"\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t// The preview uses the site's locale to make it more true to how\n\t\t\t\t\t// the block appears on the frontend. Setting the locale\n\t\t\t\t\t// explicitly prevents any middleware from setting it to 'user'.\n\t\t\t\t\turlQueryArgs={ { _locale: 'site' } }\n\t\t\t\t/>\n\t\t\t</Disabled>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst postList = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v12zM7 11h2V9H7v2zm0 4h2v-2H7v2zm3-4h7V9h-7v2zm0 4h7v-2h-7v2z\" />\n\t</SVG>\n);\n\nexport default postList;\n","/**\n * Internal dependencies\n */\nimport metadata from './block.json';\n\nconst { attributes } = metadata;\n\nexport default [\n\t{\n\t\tattributes: {\n\t\t\t...attributes,\n\t\t\tcategories: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\talign: true,\n\t\t\thtml: false,\n\t\t},\n\t\tmigrate: ( oldAttributes ) => {\n\t\t\t// This needs the full category object, not just the ID.\n\t\t\treturn {\n\t\t\t\t...oldAttributes,\n\t\t\t\tcategories: [ { id: Number( oldAttributes.categories ) } ],\n\t\t\t};\n\t\t},\n\t\tisEligible: ( { categories } ) =>\n\t\t\tcategories && 'string' === typeof categories,\n\t\tsave: () => null,\n\t},\n];\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst list = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M4 4v1.5h16V4H4zm8 8.5h8V11h-8v1.5zM4 20h16v-1.5H4V20zm4-8c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2z\" />\n\t</SVG>\n);\n\nexport default list;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst grid = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\td=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7.8 16.5H5c-.3 0-.5-.2-.5-.5v-6.2h6.8v6.7zm0-8.3H4.5V5c0-.3.2-.5.5-.5h6.2v6.7zm8.3 7.8c0 .3-.2.5-.5.5h-6.2v-6.8h6.8V19zm0-7.8h-6.8V4.5H19c.3 0 .5.2.5.5v6.2z\"\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t</SVG>\n);\n\nexport default grid;\n","/**\n * External dependencies\n */\nimport { get, includes, pickBy } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tPanelBody,\n\tPlaceholder,\n\tQueryControls,\n\tRadioControl,\n\tRangeControl,\n\tSpinner,\n\tToggleControl,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { dateI18n, format, getSettings } from '@wordpress/date';\nimport {\n\tInspectorControls,\n\tBlockAlignmentToolbar,\n\tBlockControls,\n\t__experimentalImageSizeControl as ImageSizeControl,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { pin, list, grid } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticeStore } from '@wordpress/notices';\nimport { useInstanceId } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tMIN_EXCERPT_LENGTH,\n\tMAX_EXCERPT_LENGTH,\n\tMAX_POSTS_COLUMNS,\n} from './constants';\n\n/**\n * Module Constants\n */\nconst CATEGORIES_LIST_QUERY = {\n\tper_page: -1,\n\tcontext: 'view',\n};\nconst USERS_LIST_QUERY = {\n\tper_page: -1,\n\thas_published_posts: [ 'post' ],\n\tcontext: 'view',\n};\n\nfunction getFeaturedImageDetails( post, size ) {\n\tconst image = get( post, [ '_embedded', 'wp:featuredmedia', '0' ] );\n\n\treturn {\n\t\turl:\n\t\t\timage?.media_details?.sizes?.[ size ]?.source_url ??\n\t\t\timage?.source_url,\n\t\talt: image?.alt_text,\n\t};\n}\n\nexport default function LatestPostsEdit( { attributes, setAttributes } ) {\n\tconst instanceId = useInstanceId( LatestPostsEdit );\n\tconst {\n\t\tpostsToShow,\n\t\torder,\n\t\torderBy,\n\t\tcategories,\n\t\tselectedAuthor,\n\t\tdisplayFeaturedImage,\n\t\tdisplayPostContentRadio,\n\t\tdisplayPostContent,\n\t\tdisplayPostDate,\n\t\tdisplayAuthor,\n\t\tpostLayout,\n\t\tcolumns,\n\t\texcerptLength,\n\t\tfeaturedImageAlign,\n\t\tfeaturedImageSizeSlug,\n\t\tfeaturedImageSizeWidth,\n\t\tfeaturedImageSizeHeight,\n\t\taddLinkToFeaturedImage,\n\t} = attributes;\n\tconst {\n\t\timageSizes,\n\t\tlatestPosts,\n\t\tdefaultImageWidth,\n\t\tdefaultImageHeight,\n\t\tcategoriesList,\n\t\tauthorList,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords, getUsers } = select( coreStore );\n\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\t\tconst catIds =\n\t\t\t\tcategories && categories.length > 0\n\t\t\t\t\t? categories.map( ( cat ) => cat.id )\n\t\t\t\t\t: [];\n\t\t\tconst latestPostsQuery = pickBy(\n\t\t\t\t{\n\t\t\t\t\tcategories: catIds,\n\t\t\t\t\tauthor: selectedAuthor,\n\t\t\t\t\torder,\n\t\t\t\t\torderby: orderBy,\n\t\t\t\t\tper_page: postsToShow,\n\t\t\t\t\t_embed: 'wp:featuredmedia',\n\t\t\t\t},\n\t\t\t\t( value ) => typeof value !== 'undefined'\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tdefaultImageWidth: get(\n\t\t\t\t\tsettings.imageDimensions,\n\t\t\t\t\t[ featuredImageSizeSlug, 'width' ],\n\t\t\t\t\t0\n\t\t\t\t),\n\t\t\t\tdefaultImageHeight: get(\n\t\t\t\t\tsettings.imageDimensions,\n\t\t\t\t\t[ featuredImageSizeSlug, 'height' ],\n\t\t\t\t\t0\n\t\t\t\t),\n\t\t\t\timageSizes: settings.imageSizes,\n\t\t\t\tlatestPosts: getEntityRecords(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'post',\n\t\t\t\t\tlatestPostsQuery\n\t\t\t\t),\n\t\t\t\tcategoriesList: getEntityRecords(\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\t'category',\n\t\t\t\t\tCATEGORIES_LIST_QUERY\n\t\t\t\t),\n\t\t\t\tauthorList: getUsers( USERS_LIST_QUERY ),\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tfeaturedImageSizeSlug,\n\t\t\tpostsToShow,\n\t\t\torder,\n\t\t\torderBy,\n\t\t\tcategories,\n\t\t\tselectedAuthor,\n\t\t]\n\t);\n\n\t// If a user clicks to a link prevent redirection and show a warning.\n\tconst { createWarningNotice, removeNotice } = useDispatch( noticeStore );\n\tlet noticeId;\n\tconst showRedirectionPreventedNotice = ( event ) => {\n\t\tevent.preventDefault();\n\t\t// Remove previous warning if any, to show one at a time per block.\n\t\tremoveNotice( noticeId );\n\t\tnoticeId = `block-library/core/latest-posts/redirection-prevented/${ instanceId }`;\n\t\tcreateWarningNotice( __( 'Links are disabled in the editor.' ), {\n\t\t\tid: noticeId,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t};\n\n\tconst imageSizeOptions = imageSizes\n\t\t.filter( ( { slug } ) => slug !== 'full' )\n\t\t.map( ( { name, slug } ) => ( {\n\t\t\tvalue: slug,\n\t\t\tlabel: name,\n\t\t} ) );\n\tconst categorySuggestions =\n\t\tcategoriesList?.reduce(\n\t\t\t( accumulator, category ) => ( {\n\t\t\t\t...accumulator,\n\t\t\t\t[ category.name ]: category,\n\t\t\t} ),\n\t\t\t{}\n\t\t) ?? {};\n\tconst selectCategories = ( tokens ) => {\n\t\tconst hasNoSuggestion = tokens.some(\n\t\t\t( token ) =>\n\t\t\t\ttypeof token === 'string' && ! categorySuggestions[ token ]\n\t\t);\n\t\tif ( hasNoSuggestion ) {\n\t\t\treturn;\n\t\t}\n\t\t// Categories that are already will be objects, while new additions will be strings (the name).\n\t\t// allCategories nomalizes the array so that they are all objects.\n\t\tconst allCategories = tokens.map( ( token ) => {\n\t\t\treturn typeof token === 'string'\n\t\t\t\t? categorySuggestions[ token ]\n\t\t\t\t: token;\n\t\t} );\n\t\t// We do nothing if the category is not selected\n\t\t// from suggestions.\n\t\tif ( includes( allCategories, null ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tsetAttributes( { categories: allCategories } );\n\t};\n\n\tconst hasPosts = !! latestPosts?.length;\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Post content settings' ) }>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Post content' ) }\n\t\t\t\t\tchecked={ displayPostContent }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { displayPostContent: value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{ displayPostContent && (\n\t\t\t\t\t<RadioControl\n\t\t\t\t\t\tlabel={ __( 'Show:' ) }\n\t\t\t\t\t\tselected={ displayPostContentRadio }\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t{ label: __( 'Excerpt' ), value: 'excerpt' },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Full post' ),\n\t\t\t\t\t\t\t\tvalue: 'full_post',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t] }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayPostContentRadio: value,\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\t{ displayPostContent &&\n\t\t\t\t\tdisplayPostContentRadio === 'excerpt' && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\tlabel={ __( 'Max number of words in excerpt' ) }\n\t\t\t\t\t\t\tvalue={ excerptLength }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { excerptLength: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmin={ MIN_EXCERPT_LENGTH }\n\t\t\t\t\t\t\tmax={ MAX_EXCERPT_LENGTH }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t</PanelBody>\n\n\t\t\t<PanelBody title={ __( 'Post meta settings' ) }>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Display author name' ) }\n\t\t\t\t\tchecked={ displayAuthor }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { displayAuthor: value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Display post date' ) }\n\t\t\t\t\tchecked={ displayPostDate }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { displayPostDate: value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</PanelBody>\n\n\t\t\t<PanelBody title={ __( 'Featured image settings' ) }>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Display featured image' ) }\n\t\t\t\t\tchecked={ displayFeaturedImage }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { displayFeaturedImage: value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{ displayFeaturedImage && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ImageSizeControl\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tconst newAttrs = {};\n\t\t\t\t\t\t\t\tif ( value.hasOwnProperty( 'width' ) ) {\n\t\t\t\t\t\t\t\t\tnewAttrs.featuredImageSizeWidth =\n\t\t\t\t\t\t\t\t\t\tvalue.width;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( value.hasOwnProperty( 'height' ) ) {\n\t\t\t\t\t\t\t\t\tnewAttrs.featuredImageSizeHeight =\n\t\t\t\t\t\t\t\t\t\tvalue.height;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsetAttributes( newAttrs );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tslug={ featuredImageSizeSlug }\n\t\t\t\t\t\t\twidth={ featuredImageSizeWidth }\n\t\t\t\t\t\t\theight={ featuredImageSizeHeight }\n\t\t\t\t\t\t\timageWidth={ defaultImageWidth }\n\t\t\t\t\t\t\timageHeight={ defaultImageHeight }\n\t\t\t\t\t\t\timageSizeOptions={ imageSizeOptions }\n\t\t\t\t\t\t\tonChangeImage={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tfeaturedImageSizeSlug: value,\n\t\t\t\t\t\t\t\t\tfeaturedImageSizeWidth: undefined,\n\t\t\t\t\t\t\t\t\tfeaturedImageSizeHeight: undefined,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BaseControl className=\"editor-latest-posts-image-alignment-control\">\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Image alignment' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<BlockAlignmentToolbar\n\t\t\t\t\t\t\t\tvalue={ featuredImageAlign }\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\tfeaturedImageAlign: value,\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\tcontrols={ [ 'left', 'center', 'right' ] }\n\t\t\t\t\t\t\t\tisCollapsed={ false }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Add link to featured image' ) }\n\t\t\t\t\t\t\tchecked={ addLinkToFeaturedImage }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\taddLinkToFeaturedImage: value,\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) }\n\t\t\t</PanelBody>\n\n\t\t\t<PanelBody title={ __( 'Sorting and filtering' ) }>\n\t\t\t\t<QueryControls\n\t\t\t\t\t{ ...{ order, orderBy } }\n\t\t\t\t\tnumberOfItems={ postsToShow }\n\t\t\t\t\tonOrderChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { order: value } )\n\t\t\t\t\t}\n\t\t\t\t\tonOrderByChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { orderBy: value } )\n\t\t\t\t\t}\n\t\t\t\t\tonNumberOfItemsChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { postsToShow: value } )\n\t\t\t\t\t}\n\t\t\t\t\tcategorySuggestions={ categorySuggestions }\n\t\t\t\t\tonCategoryChange={ selectCategories }\n\t\t\t\t\tselectedCategories={ categories }\n\t\t\t\t\tonAuthorChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tselectedAuthor:\n\t\t\t\t\t\t\t\t'' !== value ? Number( value ) : undefined,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tauthorList={ authorList ?? [] }\n\t\t\t\t\tselectedAuthorId={ selectedAuthor }\n\t\t\t\t/>\n\n\t\t\t\t{ postLayout === 'grid' && (\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\tvalue={ columns }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { columns: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ 2 }\n\t\t\t\t\t\tmax={\n\t\t\t\t\t\t\t! hasPosts\n\t\t\t\t\t\t\t\t? MAX_POSTS_COLUMNS\n\t\t\t\t\t\t\t\t: Math.min(\n\t\t\t\t\t\t\t\t\t\tMAX_POSTS_COLUMNS,\n\t\t\t\t\t\t\t\t\t\tlatestPosts.length\n\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t}\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t'wp-block-latest-posts__list': true,\n\t\t\t'is-grid': postLayout === 'grid',\n\t\t\t'has-dates': displayPostDate,\n\t\t\t'has-author': displayAuthor,\n\t\t\t[ `columns-${ columns }` ]: postLayout === 'grid',\n\t\t} ),\n\t} );\n\n\tif ( ! hasPosts ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ inspectorControls }\n\t\t\t\t<Placeholder icon={ pin } label={ __( 'Latest Posts' ) }>\n\t\t\t\t\t{ ! Array.isArray( latestPosts ) ? (\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t__( 'No posts found.' )\n\t\t\t\t\t) }\n\t\t\t\t</Placeholder>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Removing posts from display should be instant.\n\tconst displayPosts =\n\t\tlatestPosts.length > postsToShow\n\t\t\t? latestPosts.slice( 0, postsToShow )\n\t\t\t: latestPosts;\n\n\tconst layoutControls = [\n\t\t{\n\t\t\ticon: list,\n\t\t\ttitle: __( 'List view' ),\n\t\t\tonClick: () => setAttributes( { postLayout: 'list' } ),\n\t\t\tisActive: postLayout === 'list',\n\t\t},\n\t\t{\n\t\t\ticon: grid,\n\t\t\ttitle: __( 'Grid view' ),\n\t\t\tonClick: () => setAttributes( { postLayout: 'grid' } ),\n\t\t\tisActive: postLayout === 'grid',\n\t\t},\n\t];\n\n\tconst dateFormat = getSettings().formats.date;\n\n\treturn (\n\t\t<div>\n\t\t\t{ inspectorControls }\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup controls={ layoutControls } />\n\t\t\t</BlockControls>\n\t\t\t<ul { ...blockProps }>\n\t\t\t\t{ displayPosts.map( ( post, i ) => {\n\t\t\t\t\tconst titleTrimmed = post.title.rendered.trim();\n\t\t\t\t\tlet excerpt = post.excerpt.rendered;\n\t\t\t\t\tconst currentAuthor = authorList?.find(\n\t\t\t\t\t\t( author ) => author.id === post.author\n\t\t\t\t\t);\n\n\t\t\t\t\tconst excerptElement = document.createElement( 'div' );\n\t\t\t\t\texcerptElement.innerHTML = excerpt;\n\n\t\t\t\t\texcerpt =\n\t\t\t\t\t\texcerptElement.textContent ||\n\t\t\t\t\t\texcerptElement.innerText ||\n\t\t\t\t\t\t'';\n\n\t\t\t\t\tconst { url: imageSourceUrl, alt: featuredImageAlt } =\n\t\t\t\t\t\tgetFeaturedImageDetails( post, featuredImageSizeSlug );\n\t\t\t\t\tconst imageClasses = classnames( {\n\t\t\t\t\t\t'wp-block-latest-posts__featured-image': true,\n\t\t\t\t\t\t[ `align${ featuredImageAlign }` ]:\n\t\t\t\t\t\t\t!! featuredImageAlign,\n\t\t\t\t\t} );\n\t\t\t\t\tconst renderFeaturedImage =\n\t\t\t\t\t\tdisplayFeaturedImage && imageSourceUrl;\n\t\t\t\t\tconst featuredImage = renderFeaturedImage && (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={ imageSourceUrl }\n\t\t\t\t\t\t\talt={ featuredImageAlt }\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tmaxWidth: featuredImageSizeWidth,\n\t\t\t\t\t\t\t\tmaxHeight: featuredImageSizeHeight,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\n\t\t\t\t\tconst needsReadMore =\n\t\t\t\t\t\texcerptLength < excerpt.trim().split( ' ' ).length &&\n\t\t\t\t\t\tpost.excerpt.raw === '';\n\n\t\t\t\t\tconst postExcerpt = needsReadMore ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ excerpt\n\t\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t\t\t.split( ' ', excerptLength )\n\t\t\t\t\t\t\t\t.join( ' ' ) }\n\t\t\t\t\t\t\t{ /* translators: excerpt truncation character, default …  */ }\n\t\t\t\t\t\t\t{ __( ' … ' ) }\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref={ post.link }\n\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\tonClick={ showRedirectionPreventedNotice }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Read more' ) }\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\texcerpt\n\t\t\t\t\t);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li key={ i }>\n\t\t\t\t\t\t\t{ renderFeaturedImage && (\n\t\t\t\t\t\t\t\t<div className={ imageClasses }>\n\t\t\t\t\t\t\t\t\t{ addLinkToFeaturedImage ? (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"wp-block-latest-posts__post-title\"\n\t\t\t\t\t\t\t\t\t\t\thref={ post.link }\n\t\t\t\t\t\t\t\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t\t\t\t\tshowRedirectionPreventedNotice\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ featuredImage }\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\tfeaturedImage\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref={ post.link }\n\t\t\t\t\t\t\t\trel=\"noreferrer noopener\"\n\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={\n\t\t\t\t\t\t\t\t\t!! titleTrimmed\n\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t__html: titleTrimmed,\n\t\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonClick={ showRedirectionPreventedNotice }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ ! titleTrimmed ? __( '(no title)' ) : null }\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t{ displayAuthor && currentAuthor && (\n\t\t\t\t\t\t\t\t<div className=\"wp-block-latest-posts__post-author\">\n\t\t\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: byline. %s: current author. */\n\t\t\t\t\t\t\t\t\t\t__( 'by %s' ),\n\t\t\t\t\t\t\t\t\t\tcurrentAuthor.name\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ displayPostDate && post.date_gmt && (\n\t\t\t\t\t\t\t\t<time\n\t\t\t\t\t\t\t\t\tdateTime={ format( 'c', post.date_gmt ) }\n\t\t\t\t\t\t\t\t\tclassName=\"wp-block-latest-posts__post-date\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ dateI18n( dateFormat, post.date_gmt ) }\n\t\t\t\t\t\t\t\t</time>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ displayPostContent &&\n\t\t\t\t\t\t\t\tdisplayPostContentRadio === 'excerpt' && (\n\t\t\t\t\t\t\t\t\t<div className=\"wp-block-latest-posts__post-excerpt\">\n\t\t\t\t\t\t\t\t\t\t{ postExcerpt }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ displayPostContent &&\n\t\t\t\t\t\t\t\tdisplayPostContentRadio === 'full_post' && (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName=\"wp-block-latest-posts__post-full-content\"\n\t\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t\t\t\t\t__html: post.content.raw.trim(),\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</li>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</ul>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { postList 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';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {},\n\tedit,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","export const MIN_EXCERPT_LENGTH = 10;\nexport const MAX_EXCERPT_LENGTH = 100;\nexport const MAX_POSTS_COLUMNS = 6;\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nexport function createListBlockFromDOMElement( listElement ) {\n\tconst listAttributes = {\n\t\tordered: 'OL' === listElement.tagName,\n\t\tanchor: listElement.id === '' ? undefined : listElement.id,\n\t\tstart: listElement.getAttribute( 'start' )\n\t\t\t? parseInt( listElement.getAttribute( 'start' ), 10 )\n\t\t\t: undefined,\n\t\treversed: listElement.hasAttribute( 'reversed' ) ? true : undefined,\n\t\ttype: listElement.getAttribute( 'type' ) ?? undefined,\n\t};\n\n\tconst innerBlocks = Array.from( listElement.children ).map(\n\t\t( listItem ) => {\n\t\t\tconst children = Array.from( listItem.childNodes ).filter(\n\t\t\t\t( node ) =>\n\t\t\t\t\tnode.nodeType !== node.TEXT_NODE ||\n\t\t\t\t\tnode.textContent.trim().length !== 0\n\t\t\t);\n\t\t\tchildren.reverse();\n\t\t\tconst [ nestedList, ...nodes ] = children;\n\n\t\t\tconst hasNestedList =\n\t\t\t\tnestedList?.tagName === 'UL' || nestedList?.tagName === 'OL';\n\t\t\tif ( ! hasNestedList ) {\n\t\t\t\treturn createBlock( 'core/list-item', {\n\t\t\t\t\tcontent: listItem.innerHTML,\n\t\t\t\t} );\n\t\t\t}\n\t\t\tconst htmlNodes = nodes.map( ( node ) => {\n\t\t\t\tif ( node.nodeType === node.TEXT_NODE ) {\n\t\t\t\t\treturn node.textContent;\n\t\t\t\t}\n\t\t\t\treturn node.outerHTML;\n\t\t\t} );\n\t\t\thtmlNodes.reverse();\n\t\t\tconst childAttributes = {\n\t\t\t\tcontent: htmlNodes.join( '' ).trim(),\n\t\t\t};\n\t\t\tconst childInnerBlocks = [\n\t\t\t\tcreateListBlockFromDOMElement( nestedList ),\n\t\t\t];\n\t\t\treturn createBlock(\n\t\t\t\t'core/list-item',\n\t\t\t\tchildAttributes,\n\t\t\t\tchildInnerBlocks\n\t\t\t);\n\t\t}\n\t);\n\n\treturn createBlock( 'core/list', listAttributes, innerBlocks );\n}\n\nexport function migrateToListV2( attributes ) {\n\tconst { values, start, reversed, ordered, type } = attributes;\n\n\tconst list = document.createElement( ordered ? 'ol' : 'ul' );\n\tlist.innerHTML = values;\n\tif ( start ) {\n\t\tlist.setAttribute( 'start', start );\n\t}\n\tif ( reversed ) {\n\t\tlist.setAttribute( 'reversed', true );\n\t}\n\tif ( type ) {\n\t\tlist.setAttribute( 'type', type );\n\t}\n\n\tconst listBlock = createListBlockFromDOMElement( list );\n\n\tconst { values: omittedValues, ...restAttributes } = attributes;\n\n\treturn [\n\t\t{\n\t\t\t...restAttributes,\n\t\t\t...listBlock.attributes,\n\t\t},\n\t\tlistBlock.innerBlocks,\n\t];\n}\n","/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\nimport { migrateToListV2 } from './utils';\n\nconst v0 = {\n\tattributes: {\n\t\tordered: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t\t__experimentalRole: 'content',\n\t\t},\n\t\tvalues: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'ol,ul',\n\t\t\tmultiline: 'li',\n\t\t\t__unstableMultilineWrapperTags: [ 'ol', 'ul' ],\n\t\t\tdefault: '',\n\t\t\t__experimentalRole: 'content',\n\t\t},\n\t\ttype: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tstart: {\n\t\t\ttype: 'number',\n\t\t},\n\t\treversed: {\n\t\t\ttype: 'boolean',\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\tanchor: true,\n\t\tclassName: false,\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t},\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t\tlink: true,\n\t\t},\n\t\t__unstablePasteTextInline: true,\n\t\t__experimentalSelector: 'ol,ul',\n\t\t__experimentalSlashInserter: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst { ordered, values, type, reversed, start } = attributes;\n\t\tconst TagName = ordered ? 'ol' : 'ul';\n\n\t\treturn (\n\t\t\t<TagName { ...useBlockProps.save( { type, reversed, start } ) }>\n\t\t\t\t<RichText.Content value={ values } multiline=\"li\" />\n\t\t\t</TagName>\n\t\t);\n\t},\n\tmigrate: migrateFontFamily,\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\nconst v1 = {\n\tattributes: {\n\t\tordered: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t\t__experimentalRole: 'content',\n\t\t},\n\t\tvalues: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'ol,ul',\n\t\t\tmultiline: 'li',\n\t\t\t__unstableMultilineWrapperTags: [ 'ol', 'ul' ],\n\t\t\tdefault: '',\n\t\t\t__experimentalRole: 'content',\n\t\t},\n\t\ttype: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tstart: {\n\t\t\ttype: 'number',\n\t\t},\n\t\treversed: {\n\t\t\ttype: 'boolean',\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\tanchor: true,\n\t\tclassName: false,\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalLetterSpacing: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tfontSize: true,\n\t\t\t},\n\t\t},\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t\tlink: true,\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tbackground: true,\n\t\t\t\ttext: true,\n\t\t\t},\n\t\t},\n\t\t__unstablePasteTextInline: true,\n\t\t__experimentalSelector: 'ol,ul',\n\t\t__experimentalSlashInserter: true,\n\t},\n\tsave( { attributes } ) {\n\t\tconst { ordered, values, type, reversed, start } = attributes;\n\t\tconst TagName = ordered ? 'ol' : 'ul';\n\n\t\treturn (\n\t\t\t<TagName { ...useBlockProps.save( { type, reversed, start } ) }>\n\t\t\t\t<RichText.Content value={ values } multiline=\"li\" />\n\t\t\t</TagName>\n\t\t);\n\t},\n\tmigrate: migrateToListV2,\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v1, v0 ];\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst formatOutdentRTL = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M20 5.5H4V4H20V5.5ZM12 12.5H4V11H12V12.5ZM20 20V18.5H4V20H20ZM15.4697 14.9697L18.4393 12L15.4697 9.03033L16.5303 7.96967L20.0303 11.4697L20.5607 12L20.0303 12.5303L16.5303 16.0303L15.4697 14.9697Z\" />\n\t</SVG>\n);\n\nexport default formatOutdentRTL;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst formatOutdent = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 7.2v1.5h16V7.2H4zm8 8.6h8v-1.5h-8v1.5zm-4-4.6l-4 4 4 4 1-1-3-3 3-3-1-1z\" />\n\t</SVG>\n);\n\nexport default formatOutdent;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst formatListBulletsRTL = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z\" />\n\t</SVG>\n);\n\nexport default formatListBulletsRTL;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst formatListBullets = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n\t</SVG>\n);\n\nexport default formatListBullets;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst formatListNumberedRTL = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M3.8 15.8h8.9v-1.5H3.8v1.5zm0-7h8.9V7.2H3.8v1.6zm14.7-2.1V10h1V5.3l-2.2.7.3 1 .9-.3zm1.2 6.1c-.5-.6-1.2-.5-1.7-.4-.3.1-.5.2-.7.3l.1 1.1c.2-.2.5-.4.8-.5.3-.1.6 0 .7.1.2.3 0 .8-.2 1.1-.5.8-.9 1.6-1.4 2.5H20v-1h-.9c.3-.6.8-1.4.9-2.1 0-.3 0-.8-.3-1.1z\" />\n\t</SVG>\n);\n\nexport default formatListNumberedRTL;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst formatListNumbered = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM5 6.7V10h1V5.3L3.8 6l.4 1 .8-.3zm-.4 5.7c-.3.1-.5.2-.7.3l.1 1.1c.2-.2.5-.4.8-.5.3-.1.6 0 .7.1.2.3 0 .8-.2 1.1-.5.8-.9 1.6-1.4 2.5h2.7v-1h-1c.3-.6.8-1.4.9-2.1.1-.3 0-.8-.2-1.1-.5-.6-1.3-.5-1.7-.4z\" />\n\t</SVG>\n);\n\nexport default formatListNumbered;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"deprecated\"];","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { TextControl, PanelBody, ToggleControl } from '@wordpress/components';\n\nconst OrderedListSettings = ( { setAttributes, reversed, start } ) => (\n\t<InspectorControls>\n\t\t<PanelBody title={ __( 'Ordered list settings' ) }>\n\t\t\t<TextControl\n\t\t\t\tlabel={ __( 'Start value' ) }\n\t\t\t\ttype=\"number\"\n\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\tconst int = parseInt( value, 10 );\n\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t// It should be possible to unset the value,\n\t\t\t\t\t\t// e.g. with an empty string.\n\t\t\t\t\t\tstart: isNaN( int ) ? undefined : int,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tvalue={ Number.isInteger( start ) ? start.toString( 10 ) : '' }\n\t\t\t\tstep=\"1\"\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Reverse list numbering' ) }\n\t\t\t\tchecked={ reversed || false }\n\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t// Unset the attribute if not reversed.\n\t\t\t\t\t\treversed: value || undefined,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PanelBody>\n\t</InspectorControls>\n);\n\nexport default OrderedListSettings;\n","/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\n\nfunction TagName( props, ref ) {\n\tconst { ordered, ...extraProps } = props;\n\tconst Tag = ordered ? 'ol' : 'ul';\n\n\treturn <Tag ref={ ref } { ...extraProps } />;\n}\n\nexport default forwardRef( TagName );\n","/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { ToolbarButton } from '@wordpress/components';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport {\n\tformatListBullets,\n\tformatListBulletsRTL,\n\tformatListNumbered,\n\tformatListNumberedRTL,\n\tformatOutdent,\n\tformatOutdentRTL,\n} from '@wordpress/icons';\nimport { createBlock } from '@wordpress/blocks';\nimport { useCallback, useEffect, Platform } from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport OrderedListSettings from './ordered-list-settings';\nimport { migrateToListV2 } from './utils';\nimport TagName from './tag-name';\n\nconst TEMPLATE = [ [ 'core/list-item' ] ];\nconst NATIVE_MARGIN_SPACING = 8;\n\n/**\n * At the moment, deprecations don't handle create blocks from attributes\n * (like when using CPT templates). For this reason, this hook is necessary\n * to avoid breaking templates using the old list block format.\n *\n * @param {Object} attributes Block attributes.\n * @param {string} clientId   Block client ID.\n */\nfunction useMigrateOnLoad( attributes, clientId ) {\n\tconst registry = useRegistry();\n\tconst { updateBlockAttributes, replaceInnerBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// As soon as the block is loaded, migrate it to the new version.\n\n\t\tif ( ! attributes.values ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ newAttributes, newInnerBlocks ] = migrateToListV2( attributes );\n\n\t\tdeprecated( 'Value attribute on the list block', {\n\t\t\tsince: '6.0',\n\t\t\tversion: '6.5',\n\t\t\talternative: 'inner blocks',\n\t\t} );\n\n\t\tregistry.batch( () => {\n\t\t\tupdateBlockAttributes( clientId, newAttributes );\n\t\t\treplaceInnerBlocks( clientId, newInnerBlocks );\n\t\t} );\n\t}, [ attributes.values ] );\n}\n\nfunction useOutdentList( clientId ) {\n\tconst { canOutdent } = useSelect(\n\t\t( innerSelect ) => {\n\t\t\tconst { getBlockRootClientId, getBlock } =\n\t\t\t\tinnerSelect( blockEditorStore );\n\t\t\tconst parentId = getBlockRootClientId( clientId );\n\t\t\treturn {\n\t\t\t\tcanOutdent:\n\t\t\t\t\t!! parentId &&\n\t\t\t\t\tgetBlock( parentId ).name === 'core/list-item',\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );\n\tconst { getBlockRootClientId, getBlockAttributes, getBlock } =\n\t\tuseSelect( blockEditorStore );\n\n\treturn [\n\t\tcanOutdent,\n\t\tuseCallback( () => {\n\t\t\tconst parentBlockId = getBlockRootClientId( clientId );\n\t\t\tconst parentBlockAttributes = getBlockAttributes( parentBlockId );\n\t\t\t// Create a new parent block without the inner blocks.\n\t\t\tconst newParentBlock = createBlock(\n\t\t\t\t'core/list-item',\n\t\t\t\tparentBlockAttributes\n\t\t\t);\n\t\t\tconst { innerBlocks } = getBlock( clientId );\n\t\t\t// Replace the parent block with a new parent block without inner blocks,\n\t\t\t// and make the inner blocks siblings of the parent.\n\t\t\treplaceBlocks(\n\t\t\t\t[ parentBlockId ],\n\t\t\t\t[ newParentBlock, ...innerBlocks ]\n\t\t\t);\n\t\t\t// Select the last child of the list being outdent.\n\t\t\tselectionChange( innerBlocks[ innerBlocks.length - 1 ].clientId );\n\t\t}, [ clientId ] ),\n\t];\n}\n\nfunction IndentUI( { clientId } ) {\n\tconst [ canOutdent, outdentList ] = useOutdentList( clientId );\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatOutdentRTL : formatOutdent }\n\t\t\t\ttitle={ __( 'Outdent' ) }\n\t\t\t\tdescribedBy={ __( 'Outdent list item' ) }\n\t\t\t\tdisabled={ ! canOutdent }\n\t\t\t\tonClick={ outdentList }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default function Edit( { attributes, setAttributes, clientId, style } ) {\n\tconst blockProps = useBlockProps( {\n\t\t...( Platform.isNative && { style } ),\n\t} );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/list-item' ],\n\t\ttemplate: TEMPLATE,\n\t\ttemplateLock: false,\n\t\ttemplateInsertUpdatesSelection: true,\n\t\t...( Platform.isNative && {\n\t\t\tmarginVertical: NATIVE_MARGIN_SPACING,\n\t\t\tmarginHorizontal: NATIVE_MARGIN_SPACING,\n\t\t\tuseCompactList: true,\n\t\t} ),\n\t} );\n\tuseMigrateOnLoad( attributes, clientId );\n\tconst { ordered, type, reversed, start } = attributes;\n\n\tconst controls = (\n\t\t<BlockControls group=\"block\">\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatListBulletsRTL : formatListBullets }\n\t\t\t\ttitle={ __( 'Unordered' ) }\n\t\t\t\tdescribedBy={ __( 'Convert to unordered list' ) }\n\t\t\t\tisActive={ ordered === false }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetAttributes( { ordered: false } );\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatListNumberedRTL : formatListNumbered }\n\t\t\t\ttitle={ __( 'Ordered' ) }\n\t\t\t\tdescribedBy={ __( 'Convert to ordered list' ) }\n\t\t\t\tisActive={ ordered === true }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetAttributes( { ordered: true } );\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<IndentUI clientId={ clientId } />\n\t\t</BlockControls>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<TagName\n\t\t\t\tordered={ ordered }\n\t\t\t\treversed={ reversed }\n\t\t\t\tstart={ start }\n\t\t\t\ttype={ type }\n\t\t\t\t{ ...innerBlocksProps }\n\t\t\t/>\n\t\t\t{ controls }\n\t\t\t{ ordered && (\n\t\t\t\t<OrderedListSettings\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tordered={ ordered }\n\t\t\t\t\treversed={ reversed }\n\t\t\t\t\tstart={ start }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { create, split, toHTMLString } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { createListBlockFromDOMElement } from './utils';\n\nfunction getListContentSchema( { phrasingContentSchema } ) {\n\tconst listContentSchema = {\n\t\t...phrasingContentSchema,\n\t\tul: {},\n\t\tol: { attributes: [ 'type', 'start', 'reversed' ] },\n\t};\n\n\t// Recursion is needed.\n\t// Possible: ul > li > ul.\n\t// Impossible: ul > ul.\n\t[ 'ul', 'ol' ].forEach( ( tag ) => {\n\t\tlistContentSchema[ tag ].children = {\n\t\t\tli: {\n\t\t\t\tchildren: listContentSchema,\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn listContentSchema;\n}\n\nfunction getListContentFlat( blocks ) {\n\treturn blocks.flatMap( ( { name, attributes, innerBlocks = [] } ) => {\n\t\tif ( name === 'core/list-item' ) {\n\t\t\treturn [ attributes.content, ...getListContentFlat( innerBlocks ) ];\n\t\t}\n\t\treturn getListContentFlat( innerBlocks );\n\t} );\n}\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ 'core/paragraph', 'core/heading' ],\n\t\t\ttransform: ( blockAttributes ) => {\n\t\t\t\tlet childBlocks = [];\n\t\t\t\tif ( blockAttributes.length > 1 ) {\n\t\t\t\t\tchildBlocks = blockAttributes.map( ( { content } ) => {\n\t\t\t\t\t\treturn createBlock( 'core/list-item', { content } );\n\t\t\t\t\t} );\n\t\t\t\t} else if ( blockAttributes.length === 1 ) {\n\t\t\t\t\tconst value = create( {\n\t\t\t\t\t\thtml: blockAttributes[ 0 ].content,\n\t\t\t\t\t} );\n\t\t\t\t\tchildBlocks = split( value, '\\n' ).map( ( result ) => {\n\t\t\t\t\t\treturn createBlock( 'core/list-item', {\n\t\t\t\t\t\t\tcontent: toHTMLString( { value: result } ),\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/list',\n\t\t\t\t\t{\n\t\t\t\t\t\tanchor: blockAttributes.anchor,\n\t\t\t\t\t},\n\t\t\t\t\tchildBlocks\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tselector: 'ol,ul',\n\t\t\tschema: ( args ) => ( {\n\t\t\t\tol: getListContentSchema( args ).ol,\n\t\t\t\tul: getListContentSchema( args ).ul,\n\t\t\t} ),\n\t\t\ttransform: createListBlockFromDOMElement,\n\t\t},\n\t\t...[ '*', '-' ].map( ( prefix ) => ( {\n\t\t\ttype: 'prefix',\n\t\t\tprefix,\n\t\t\ttransform( content ) {\n\t\t\t\treturn createBlock( 'core/list', {}, [\n\t\t\t\t\tcreateBlock( 'core/list-item', { content } ),\n\t\t\t\t] );\n\t\t\t},\n\t\t} ) ),\n\t\t...[ '1.', '1)' ].map( ( prefix ) => ( {\n\t\t\ttype: 'prefix',\n\t\t\tprefix,\n\t\t\ttransform( content ) {\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/list',\n\t\t\t\t\t{\n\t\t\t\t\t\tordered: true,\n\t\t\t\t\t},\n\t\t\t\t\t[ createBlock( 'core/list-item', { content } ) ]\n\t\t\t\t);\n\t\t\t},\n\t\t} ) ),\n\t],\n\tto: [\n\t\t...[ 'core/paragraph', 'core/heading' ].map( ( block ) => ( {\n\t\t\ttype: 'block',\n\t\t\tblocks: [ block ],\n\t\t\ttransform: ( _attributes, childBlocks ) => {\n\t\t\t\treturn getListContentFlat( childBlocks ).map( ( content ) =>\n\t\t\t\t\tcreateBlock( block, {\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t},\n\t\t} ) ),\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { list as icon } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\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\nconst settings = {\n\ticon,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/list-item',\n\t\t\t\tattributes: { content: __( 'Alice.' ) },\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/list-item',\n\t\t\t\tattributes: { content: __( 'The White Rabbit.' ) },\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/list-item',\n\t\t\t\tattributes: { content: __( 'The Cheshire Cat.' ) },\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/list-item',\n\t\t\t\tattributes: { content: __( 'The Mad Hatter.' ) },\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/list-item',\n\t\t\t\tattributes: { content: __( 'The Queen of Hearts.' ) },\n\t\t\t},\n\t\t],\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport { settings };\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { ordered, type, reversed, start } = attributes;\n\tconst TagName = ordered ? 'ol' : 'ul';\n\treturn (\n\t\t<TagName { ...useBlockProps.save( { type, reversed, start } ) }>\n\t\t\t<InnerBlocks.Content />\n\t\t</TagName>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst listItem = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M12 11v1.5h8V11h-8zm-6-1c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n\t</SVG>\n);\n\nexport default listItem;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst formatIndentRTL = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M20 5.5H4V4H20V5.5ZM12 12.5H4V11H12V12.5ZM20 20V18.5H4V20H20ZM20.0303 9.03033L17.0607 12L20.0303 14.9697L18.9697 16.0303L15.4697 12.5303L14.9393 12L15.4697 11.4697L18.9697 7.96967L20.0303 9.03033Z\" />\n\t</SVG>\n);\n\nexport default formatIndentRTL;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst formatIndent = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 7.2v1.5h16V7.2H4zm8 8.6h8v-1.5h-8v1.5zm-8-3.5l3 3-3 3 1 1 4-4-4-4-1 1z\" />\n\t</SVG>\n);\n\nexport default formatIndent;\n","/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { createBlock, cloneBlock } from '@wordpress/blocks';\n\nexport default function useIndentListItem( clientId ) {\n\tconst canIndent = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlockIndex( clientId ) > 0,\n\t\t[ clientId ]\n\t);\n\tconst { replaceBlocks, selectionChange, multiSelect } =\n\t\tuseDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlock,\n\t\tgetPreviousBlockClientId,\n\t\tgetSelectionStart,\n\t\tgetSelectionEnd,\n\t\thasMultiSelection,\n\t\tgetMultiSelectedBlockClientIds,\n\t} = useSelect( blockEditorStore );\n\treturn [\n\t\tcanIndent,\n\t\tuseCallback( () => {\n\t\t\tconst _hasMultiSelection = hasMultiSelection();\n\t\t\tconst clientIds = _hasMultiSelection\n\t\t\t\t? getMultiSelectedBlockClientIds()\n\t\t\t\t: [ clientId ];\n\t\t\tconst clonedBlocks = clientIds.map( ( _clientId ) =>\n\t\t\t\tcloneBlock( getBlock( _clientId ) )\n\t\t\t);\n\t\t\tconst previousSiblingId = getPreviousBlockClientId( clientId );\n\t\t\tconst newListItem = cloneBlock( getBlock( previousSiblingId ) );\n\t\t\t// If the sibling has no innerBlocks, create a new `list` block.\n\t\t\tif ( ! newListItem.innerBlocks?.length ) {\n\t\t\t\tnewListItem.innerBlocks = [ createBlock( 'core/list' ) ];\n\t\t\t}\n\t\t\t// A list item usually has one `list`, but it's possible to have\n\t\t\t// more. So we need to preserve the previous `list` blocks and\n\t\t\t// merge the new blocks to the last `list`.\n\t\t\tnewListItem.innerBlocks[\n\t\t\t\tnewListItem.innerBlocks.length - 1\n\t\t\t].innerBlocks.push( ...clonedBlocks );\n\n\t\t\t// We get the selection start/end here, because when\n\t\t\t// we replace blocks, the selection is updated too.\n\t\t\tconst selectionStart = getSelectionStart();\n\t\t\tconst selectionEnd = getSelectionEnd();\n\t\t\t// Replace the previous sibling of the block being indented and the indented blocks,\n\t\t\t// with a new block whose attributes are equal to the ones of the previous sibling and\n\t\t\t// whose descendants are the children of the previous sibling, followed by the indented blocks.\n\t\t\treplaceBlocks(\n\t\t\t\t[ previousSiblingId, ...clientIds ],\n\t\t\t\t[ newListItem ]\n\t\t\t);\n\t\t\tif ( ! _hasMultiSelection ) {\n\t\t\t\tselectionChange(\n\t\t\t\t\tclonedBlocks[ 0 ].clientId,\n\t\t\t\t\tselectionEnd.attributeKey,\n\t\t\t\t\tselectionEnd.clientId === selectionStart.clientId\n\t\t\t\t\t\t? selectionStart.offset\n\t\t\t\t\t\t: selectionEnd.offset,\n\t\t\t\t\tselectionEnd.offset\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmultiSelect(\n\t\t\t\t\tclonedBlocks[ 0 ].clientId,\n\t\t\t\t\tclonedBlocks[ clonedBlocks.length - 1 ].clientId\n\t\t\t\t);\n\t\t\t}\n\t\t}, [ clientId ] ),\n\t];\n}\n","/**\n * External dependencies\n */\nimport { castArray } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { cloneBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { name as listItemName } from '../block.json';\n\nexport default function useOutdentListItem( clientId ) {\n\tconst registry = useRegistry();\n\tconst { canOutdent } = useSelect(\n\t\t( innerSelect ) => {\n\t\t\tconst { getBlockRootClientId } = innerSelect( blockEditorStore );\n\t\t\tconst grandParentId = getBlockRootClientId(\n\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tcanOutdent: !! grandParentId,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst {\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tinsertBlock,\n\t\tupdateBlockListSettings,\n\t} = useDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlockRootClientId,\n\t\tgetBlockName,\n\t\tgetBlockOrder,\n\t\tgetBlockIndex,\n\t\tgetSelectedBlockClientIds,\n\t\tgetBlock,\n\t\tgetBlockListSettings,\n\t} = useSelect( blockEditorStore );\n\n\tfunction getParentListItemId( id ) {\n\t\tconst listId = getBlockRootClientId( id );\n\t\tconst parentListItemId = getBlockRootClientId( listId );\n\t\tif ( ! parentListItemId ) return;\n\t\tif ( getBlockName( parentListItemId ) !== listItemName ) return;\n\t\treturn parentListItemId;\n\t}\n\n\treturn [\n\t\tcanOutdent,\n\t\tuseCallback( ( clientIds = getSelectedBlockClientIds() ) => {\n\t\t\tclientIds = castArray( clientIds );\n\n\t\t\tif ( ! clientIds.length ) return;\n\n\t\t\tconst firstClientId = clientIds[ 0 ];\n\n\t\t\t// Can't outdent if it's not a list item.\n\t\t\tif ( getBlockName( firstClientId ) !== listItemName ) return;\n\n\t\t\tconst parentListItemId = getParentListItemId( firstClientId );\n\n\t\t\t// Can't outdent if it's at the top level.\n\t\t\tif ( ! parentListItemId ) return;\n\n\t\t\tconst parentListId = getBlockRootClientId( firstClientId );\n\t\t\tconst lastClientId = clientIds[ clientIds.length - 1 ];\n\t\t\tconst order = getBlockOrder( parentListId );\n\t\t\tconst followingListItems = order.slice(\n\t\t\t\tgetBlockIndex( lastClientId ) + 1\n\t\t\t);\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tif ( followingListItems.length ) {\n\t\t\t\t\tlet nestedListId = getBlockOrder( firstClientId )[ 0 ];\n\n\t\t\t\t\tif ( ! nestedListId ) {\n\t\t\t\t\t\tconst nestedListBlock = cloneBlock(\n\t\t\t\t\t\t\tgetBlock( parentListId ),\n\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\tnestedListId = nestedListBlock.clientId;\n\t\t\t\t\t\tinsertBlock( nestedListBlock, 0, firstClientId, false );\n\t\t\t\t\t\t// Immediately update the block list settings, otherwise\n\t\t\t\t\t\t// blocks can't be moved here due to canInsert checks.\n\t\t\t\t\t\tupdateBlockListSettings(\n\t\t\t\t\t\t\tnestedListId,\n\t\t\t\t\t\t\tgetBlockListSettings( parentListId )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\tfollowingListItems,\n\t\t\t\t\t\tparentListId,\n\t\t\t\t\t\tnestedListId\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\tclientIds,\n\t\t\t\t\tparentListId,\n\t\t\t\t\tgetBlockRootClientId( parentListItemId ),\n\t\t\t\t\tgetBlockIndex( parentListItemId ) + 1\n\t\t\t\t);\n\t\t\t\tif ( ! getBlockOrder( parentListId ).length ) {\n\t\t\t\t\tremoveBlock( parentListId );\n\t\t\t\t}\n\t\t\t} );\n\t\t}, [] ),\n\t];\n}\n","/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\nexport default function useCopy( clientId ) {\n\tconst { getBlockRootClientId, getBlockName, getBlockAttributes } =\n\t\tuseSelect( blockEditorStore );\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction onCopy( event ) {\n\t\t\t// The event propagates through all nested lists, so don't override\n\t\t\t// when copying nested list items.\n\t\t\tif ( event.clipboardData.getData( '__unstableWrapperBlockName' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\tevent.clipboardData.setData(\n\t\t\t\t'__unstableWrapperBlockName',\n\t\t\t\tgetBlockName( rootClientId )\n\t\t\t);\n\t\t\tevent.clipboardData.setData(\n\t\t\t\t'__unstableWrapperBlockAttributes',\n\t\t\t\tJSON.stringify( getBlockAttributes( rootClientId ) )\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'copy', onCopy );\n\t\tnode.addEventListener( 'cut', onCopy );\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'copy', onCopy );\n\t\t\tnode.removeEventListener( 'cut', onCopy );\n\t\t};\n\t}, [] );\n}\n","/**\n * WordPress dependencies\n */\nimport { useRegistry, useDispatch, useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { getDefaultBlockName, switchToBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useOutdentListItem from './use-outdent-list-item';\n\nimport { name as listItemName } from '../block.json';\n\nexport default function useMerge( clientId ) {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetPreviousBlockClientId,\n\t\tgetNextBlockClientId,\n\t\tgetBlockOrder,\n\t\tgetBlockRootClientId,\n\t\tgetBlockName,\n\t\tgetBlock,\n\t} = useSelect( blockEditorStore );\n\tconst { mergeBlocks, moveBlocksToPosition, replaceBlock, selectBlock } =\n\t\tuseDispatch( blockEditorStore );\n\tconst [ , outdentListItem ] = useOutdentListItem( clientId );\n\n\tfunction getTrailingId( id ) {\n\t\tconst order = getBlockOrder( id );\n\n\t\tif ( ! order.length ) {\n\t\t\treturn id;\n\t\t}\n\n\t\treturn getTrailingId( order[ order.length - 1 ] );\n\t}\n\n\tfunction getParentListItemId( id ) {\n\t\tconst listId = getBlockRootClientId( id );\n\t\tconst parentListItemId = getBlockRootClientId( listId );\n\t\tif ( ! parentListItemId ) return;\n\t\tif ( getBlockName( parentListItemId ) !== listItemName ) return;\n\t\treturn parentListItemId;\n\t}\n\n\t/**\n\t * Return the next list item with respect to the given list item. If none,\n\t * return the next list item of the parent list item if it exists.\n\t *\n\t * @param {string} id A list item client ID.\n\t * @return {string?} The client ID of the next list item.\n\t */\n\tfunction _getNextId( id ) {\n\t\tconst next = getNextBlockClientId( id );\n\t\tif ( next ) return next;\n\t\tconst parentListItemId = getParentListItemId( id );\n\t\tif ( ! parentListItemId ) return;\n\t\treturn _getNextId( parentListItemId );\n\t}\n\n\t/**\n\t * Given a client ID, return the client ID of the list item on the next\n\t * line, regardless of indentation level.\n\t *\n\t * @param {string} id The client ID of the current list item.\n\t * @return {string?} The client ID of the next list item.\n\t */\n\tfunction getNextId( id ) {\n\t\tconst order = getBlockOrder( id );\n\n\t\t// If the list item does not have a nested list, return the next list\n\t\t// item.\n\t\tif ( ! order.length ) {\n\t\t\treturn _getNextId( id );\n\t\t}\n\n\t\t// Get the first list item in the nested list.\n\t\treturn getBlockOrder( order[ 0 ] )[ 0 ];\n\t}\n\n\tfunction switchToDefaultBlockType( forward ) {\n\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\tconst replacement = switchToBlockType(\n\t\t\tgetBlock( rootClientId ),\n\t\t\tgetDefaultBlockName()\n\t\t);\n\t\tconst indexToSelect = forward ? replacement.length - 1 : 0;\n\t\tconst initialPosition = forward ? -1 : 0;\n\t\tregistry.batch( () => {\n\t\t\treplaceBlock( rootClientId, replacement );\n\t\t\tselectBlock(\n\t\t\t\treplacement[ indexToSelect ].clientId,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t} );\n\t}\n\n\treturn ( forward ) => {\n\t\tif ( forward ) {\n\t\t\tconst nextBlockClientId = getNextId( clientId );\n\n\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\tswitchToDefaultBlockType( forward );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( getParentListItemId( nextBlockClientId ) ) {\n\t\t\t\toutdentListItem( nextBlockClientId );\n\t\t\t} else {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\tgetBlockOrder( nextBlockClientId ),\n\t\t\t\t\t\tnextBlockClientId,\n\t\t\t\t\t\tgetPreviousBlockClientId( nextBlockClientId )\n\t\t\t\t\t);\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\t\t\t// Merging is only done from the top level. For lowel levels, the\n\t\t\t// list item is outdented instead.\n\t\t\tconst previousBlockClientId = getPreviousBlockClientId( clientId );\n\t\t\tif ( getParentListItemId( clientId ) ) {\n\t\t\t\toutdentListItem( clientId );\n\t\t\t} else if ( previousBlockClientId ) {\n\t\t\t\tconst trailingId = getTrailingId( previousBlockClientId );\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\tgetBlockOrder( clientId ),\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tpreviousBlockClientId\n\t\t\t\t\t);\n\t\t\t\t\tmergeBlocks( trailingId, clientId );\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tswitchToDefaultBlockType( forward );\n\t\t\t}\n\t\t}\n\t};\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock, switchToBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { name as listItemName } from './block.json';\nimport { name as listName } from '../list/block.json';\n\nexport function createListItem( listItemAttributes, listAttributes, children ) {\n\treturn createBlock(\n\t\tlistItemName,\n\t\tlistItemAttributes,\n\t\t! children?.length\n\t\t\t? []\n\t\t\t: [ createBlock( listName, listAttributes, children ) ]\n\t);\n}\n\nexport function convertToListItems( blocks ) {\n\tconst listItems = [];\n\n\tfor ( let block of blocks ) {\n\t\tif ( block.name === listItemName ) {\n\t\t\tlistItems.push( block );\n\t\t} else if ( block.name === listName ) {\n\t\t\tlistItems.push( ...block.innerBlocks );\n\t\t} else if ( ( block = switchToBlockType( block, listName ) ) ) {\n\t\t\tfor ( const { innerBlocks } of block ) {\n\t\t\t\tlistItems.push( ...innerBlocks );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn listItems;\n}\n","/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport { ToolbarButton } from '@wordpress/components';\nimport {\n\tformatOutdent,\n\tformatOutdentRTL,\n\tformatIndentRTL,\n\tformatIndent,\n} from '@wordpress/icons';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseEnter,\n\tuseSpace,\n\tuseIndentListItem,\n\tuseOutdentListItem,\n\tuseSplit,\n\tuseMerge,\n\tuseCopy,\n} from './hooks';\nimport { convertToListItems } from './utils';\n\nexport function IndentUI( { clientId } ) {\n\tconst [ canIndent, indentListItem ] = useIndentListItem( clientId );\n\tconst [ canOutdent, outdentListItem ] = useOutdentListItem( clientId );\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatOutdentRTL : formatOutdent }\n\t\t\t\ttitle={ __( 'Outdent' ) }\n\t\t\t\tdescribedBy={ __( 'Outdent list item' ) }\n\t\t\t\tdisabled={ ! canOutdent }\n\t\t\t\tonClick={ () => outdentListItem() }\n\t\t\t/>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatIndentRTL : formatIndent }\n\t\t\t\ttitle={ __( 'Indent' ) }\n\t\t\t\tdescribedBy={ __( 'Indent list item' ) }\n\t\t\t\tisDisabled={ ! canIndent }\n\t\t\t\tonClick={ () => indentListItem() }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default function ListItemEdit( {\n\tattributes,\n\tsetAttributes,\n\tonReplace,\n\tclientId,\n} ) {\n\tconst { placeholder, content } = attributes;\n\tconst blockProps = useBlockProps( { ref: useCopy( clientId ) } );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/list' ],\n\t\trenderAppender: false,\n\t} );\n\tconst useEnterRef = useEnter( { content, clientId } );\n\tconst useSpaceRef = useSpace( clientId );\n\tconst onSplit = useSplit( clientId );\n\tconst onMerge = useMerge( clientId );\n\treturn (\n\t\t<>\n\t\t\t<li { ...innerBlocksProps }>\n\t\t\t\t<RichText\n\t\t\t\t\tref={ useMergeRefs( [ useEnterRef, useSpaceRef ] ) }\n\t\t\t\t\tidentifier=\"content\"\n\t\t\t\t\ttagName=\"div\"\n\t\t\t\t\tonChange={ ( nextContent ) =>\n\t\t\t\t\t\tsetAttributes( { content: nextContent } )\n\t\t\t\t\t}\n\t\t\t\t\tvalue={ content }\n\t\t\t\t\taria-label={ __( 'List text' ) }\n\t\t\t\t\tplaceholder={ placeholder || __( 'List' ) }\n\t\t\t\t\tonSplit={ onSplit }\n\t\t\t\t\tonMerge={ onMerge }\n\t\t\t\t\tonReplace={ ( blocks, ...args ) => {\n\t\t\t\t\t\tonReplace( convertToListItems( blocks ), ...args );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ innerBlocksProps.children }\n\t\t\t</li>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<IndentUI clientId={ clientId } />\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { listItem 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 save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\tmerge( attributes, attributesToMerge ) {\n\t\treturn {\n\t\t\t...attributes,\n\t\t\tcontent: attributes.content + attributesToMerge.content,\n\t\t};\n\t},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tgetDefaultBlockName,\n\tcloneBlock,\n} from '@wordpress/blocks';\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { ENTER } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport useOutdentListItem from './use-outdent-list-item';\n\nexport default function useEnter( props ) {\n\tconst { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );\n\tconst { getBlock, getBlockRootClientId, getBlockIndex } =\n\t\tuseSelect( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\tconst [ canOutdent, outdentListItem ] = useOutdentListItem(\n\t\tpropsRef.current.clientId\n\t);\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tif ( event.defaultPrevented || event.keyCode !== ENTER ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { content, clientId } = propsRef.current;\n\t\t\t\tif ( content.length ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ( canOutdent ) {\n\t\t\t\t\toutdentListItem();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Here we are in top level list so we need to split.\n\t\t\t\tconst topParentListBlock = getBlock(\n\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t);\n\t\t\t\tconst blockIndex = getBlockIndex( clientId );\n\t\t\t\tconst head = cloneBlock( {\n\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\tinnerBlocks: topParentListBlock.innerBlocks.slice(\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tblockIndex\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t\tconst middle = createBlock( getDefaultBlockName() );\n\t\t\t\t// Last list item might contain a `list` block innerBlock\n\t\t\t\t// In that case append remaining innerBlocks blocks.\n\t\t\t\tconst after = [\n\t\t\t\t\t...( topParentListBlock.innerBlocks[ blockIndex ]\n\t\t\t\t\t\t.innerBlocks[ 0 ]?.innerBlocks || [] ),\n\t\t\t\t\t...topParentListBlock.innerBlocks.slice( blockIndex + 1 ),\n\t\t\t\t];\n\t\t\t\tconst tail = after.length\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tcloneBlock( {\n\t\t\t\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\t\t\t\tinnerBlocks: after,\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t  ]\n\t\t\t\t\t: [];\n\t\t\t\treplaceBlocks(\n\t\t\t\t\ttopParentListBlock.clientId,\n\t\t\t\t\t[ head, middle, ...tail ],\n\t\t\t\t\t1\n\t\t\t\t);\n\t\t\t\t// We manually change the selection here because we are replacing\n\t\t\t\t// a different block than the selected one.\n\t\t\t\tselectionChange( middle.clientId );\n\t\t\t}\n\n\t\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\t\treturn () => {\n\t\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t\t};\n\t\t},\n\t\t[ canOutdent ]\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { SPACE } from '@wordpress/keycodes';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport useIndentListItem from './use-indent-list-item';\n\nexport default function useSpace( clientId ) {\n\tconst { getSelectionStart, getSelectionEnd } =\n\t\tuseSelect( blockEditorStore );\n\tconst [ canIndent, indentListItem ] = useIndentListItem( clientId );\n\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, shiftKey, altKey, metaKey, ctrlKey } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\t! canIndent ||\n\t\t\t\t\tkeyCode !== SPACE ||\n\t\t\t\t\t// Only override when no modifiers are pressed.\n\t\t\t\t\tshiftKey ||\n\t\t\t\t\taltKey ||\n\t\t\t\t\tmetaKey ||\n\t\t\t\t\tctrlKey\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst selectionStart = getSelectionStart();\n\t\t\t\tconst selectionEnd = getSelectionEnd();\n\t\t\t\tif (\n\t\t\t\t\tselectionStart.offset === 0 &&\n\t\t\t\t\tselectionEnd.offset === 0\n\t\t\t\t) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tindentListItem();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\t\treturn () => {\n\t\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t\t};\n\t\t},\n\t\t[ canIndent, indentListItem ]\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useCallback, useRef } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { cloneBlock, createBlock } from '@wordpress/blocks';\n\nexport default function useSplit( clientId ) {\n\t// We can not rely on the isAfterOriginal parameter of the callback,\n\t// because if the value after the split is empty isAfterOriginal is false\n\t// while the value is in fact after the original. So to avoid that issue we use\n\t// a flag where the first execution of the callback is false (it is the before value)\n\t// and the second execution is true, it is the after value.\n\tconst isAfter = useRef( false );\n\tconst { getBlock } = useSelect( blockEditorStore );\n\treturn useCallback(\n\t\t( value ) => {\n\t\t\tconst block = getBlock( clientId );\n\t\t\tif ( isAfter.current ) {\n\t\t\t\treturn cloneBlock( block, {\n\t\t\t\t\tcontent: value,\n\t\t\t\t} );\n\t\t\t}\n\t\t\tisAfter.current = true;\n\t\t\treturn createBlock( block.name, {\n\t\t\t\t...block.attributes,\n\t\t\t\tcontent: value,\n\t\t\t} );\n\t\t},\n\t\t[ clientId, getBlock ]\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks, RichText, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\treturn (\n\t\t<li { ...useBlockProps.save() }>\n\t\t\t<RichText.Content value={ attributes.content } />\n\t\t\t<InnerBlocks.Content />\n\t\t</li>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst login = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M11 14.5l1.1 1.1 3-3 .5-.5-.6-.6-3-3-1 1 1.7 1.7H5v1.5h7.7L11 14.5zM16.8 5h-7c-1.1 0-2 .9-2 2v1.5h1.5V7c0-.3.2-.5.5-.5h7c.3 0 .5.2.5.5v10c0 .3-.2.5-.5.5h-7c-.3 0-.5-.2-.5-.5v-1.5H7.8V17c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2z\" />\n\t</SVG>\n);\n\nexport default login;\n","/**\n * WordPress dependencies\n */\nimport { login 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';\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","/**\n * WordPress dependencies\n */\nimport { PanelBody, ToggleControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { InspectorControls, useBlockProps } from '@wordpress/block-editor';\n\nexport default function LoginOutEdit( { attributes, setAttributes } ) {\n\tconst { displayLoginAsForm, redirectToCurrent } = attributes;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display login as form' ) }\n\t\t\t\t\t\tchecked={ displayLoginAsForm }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayLoginAsForm: ! displayLoginAsForm,\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\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Redirect to current URL' ) }\n\t\t\t\t\t\tchecked={ redirectToCurrent }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tredirectToCurrent: ! redirectToCurrent,\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\t<div\n\t\t\t\t{ ...useBlockProps( {\n\t\t\t\t\tclassName: 'logged-in',\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<a href=\"#login-pseudo-link\">{ __( 'Log out' ) }</a>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst mediaAndText = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M3 18h8V6H3v12zM14 7.5V9h7V7.5h-7zm0 5.3h7v-1.5h-7v1.5zm0 3.7h7V15h-7v1.5z\" />\n\t</SVG>\n);\n\nexport default mediaAndText;\n","export const DEFAULT_MEDIA_SIZE_SLUG = 'full';\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tInnerBlocks,\n\tgetColorClassName,\n\tuseInnerBlocksProps,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { DEFAULT_MEDIA_SIZE_SLUG } from './constants';\n\nconst v1ToV5ImageFillStyles = ( url, focalPoint ) => {\n\treturn url\n\t\t? {\n\t\t\t\tbackgroundImage: `url(${ url })`,\n\t\t\t\tbackgroundPosition: focalPoint\n\t\t\t\t\t? `${ focalPoint.x * 100 }% ${ focalPoint.y * 100 }%`\n\t\t\t\t\t: `50% 50%`,\n\t\t  }\n\t\t: {};\n};\n\nconst DEFAULT_MEDIA_WIDTH = 50;\nconst noop = () => {};\n\nconst migrateCustomColors = ( attributes ) => {\n\tif ( ! attributes.customBackgroundColor ) {\n\t\treturn attributes;\n\t}\n\tconst style = {\n\t\tcolor: {\n\t\t\tbackground: attributes.customBackgroundColor,\n\t\t},\n\t};\n\tconst { customBackgroundColor, ...restAttributes } = attributes;\n\treturn {\n\t\t...restAttributes,\n\t\tstyle,\n\t};\n};\n\nconst baseAttributes = {\n\talign: {\n\t\ttype: 'string',\n\t\tdefault: 'wide',\n\t},\n\tmediaAlt: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'figure img',\n\t\tattribute: 'alt',\n\t\tdefault: '',\n\t},\n\tmediaPosition: {\n\t\ttype: 'string',\n\t\tdefault: 'left',\n\t},\n\tmediaId: {\n\t\ttype: 'number',\n\t},\n\tmediaType: {\n\t\ttype: 'string',\n\t},\n\tmediaWidth: {\n\t\ttype: 'number',\n\t\tdefault: 50,\n\t},\n\tisStackedOnMobile: {\n\t\ttype: 'boolean',\n\t\tdefault: true,\n\t},\n};\n\nconst v4ToV5BlockAttributes = {\n\t...baseAttributes,\n\tmediaUrl: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'figure video,figure img',\n\t\tattribute: 'src',\n\t},\n\tmediaLink: {\n\t\ttype: 'string',\n\t},\n\tlinkDestination: {\n\t\ttype: 'string',\n\t},\n\tlinkTarget: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'figure a',\n\t\tattribute: 'target',\n\t},\n\thref: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'figure a',\n\t\tattribute: 'href',\n\t},\n\trel: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'figure a',\n\t\tattribute: 'rel',\n\t},\n\tlinkClass: {\n\t\ttype: 'string',\n\t\tsource: 'attribute',\n\t\tselector: 'figure a',\n\t\tattribute: 'class',\n\t},\n\tmediaSizeSlug: {\n\t\ttype: 'string',\n\t},\n\tverticalAlignment: {\n\t\ttype: 'string',\n\t},\n\timageFill: {\n\t\ttype: 'boolean',\n\t},\n\tfocalPoint: {\n\t\ttype: 'object',\n\t},\n};\n\nconst v4ToV5Supports = {\n\tanchor: true,\n\talign: [ 'wide', 'full' ],\n\thtml: false,\n\tcolor: {\n\t\tgradients: true,\n\t\tlink: true,\n\t},\n};\n\nconst v5 = {\n\tattributes: v4ToV5BlockAttributes,\n\tsupports: v4ToV5Supports,\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tisStackedOnMobile,\n\t\t\tmediaAlt,\n\t\t\tmediaPosition,\n\t\t\tmediaType,\n\t\t\tmediaUrl,\n\t\t\tmediaWidth,\n\t\t\tmediaId,\n\t\t\tverticalAlignment,\n\t\t\timageFill,\n\t\t\tfocalPoint,\n\t\t\tlinkClass,\n\t\t\thref,\n\t\t\tlinkTarget,\n\t\t\trel,\n\t\t} = attributes;\n\t\tconst mediaSizeSlug =\n\t\t\tattributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG;\n\t\tconst newRel = isEmpty( rel ) ? undefined : rel;\n\n\t\tconst imageClasses = classnames( {\n\t\t\t[ `wp-image-${ mediaId }` ]: mediaId && mediaType === 'image',\n\t\t\t[ `size-${ mediaSizeSlug }` ]: mediaId && mediaType === 'image',\n\t\t} );\n\n\t\tlet image = (\n\t\t\t<img\n\t\t\t\tsrc={ mediaUrl }\n\t\t\t\talt={ mediaAlt }\n\t\t\t\tclassName={ imageClasses || null }\n\t\t\t/>\n\t\t);\n\n\t\tif ( href ) {\n\t\t\timage = (\n\t\t\t\t<a\n\t\t\t\t\tclassName={ linkClass }\n\t\t\t\t\thref={ href }\n\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\trel={ newRel }\n\t\t\t\t>\n\t\t\t\t\t{ image }\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\tconst mediaTypeRenders = {\n\t\t\timage: () => image,\n\t\t\tvideo: () => <video controls src={ mediaUrl } />,\n\t\t};\n\t\tconst className = classnames( {\n\t\t\t'has-media-on-the-right': 'right' === mediaPosition,\n\t\t\t'is-stacked-on-mobile': isStackedOnMobile,\n\t\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]:\n\t\t\t\tverticalAlignment,\n\t\t\t'is-image-fill': imageFill,\n\t\t} );\n\t\tconst backgroundStyles = imageFill\n\t\t\t? v1ToV5ImageFillStyles( mediaUrl, focalPoint )\n\t\t\t: {};\n\n\t\tlet gridTemplateColumns;\n\t\tif ( mediaWidth !== DEFAULT_MEDIA_WIDTH ) {\n\t\t\tgridTemplateColumns =\n\t\t\t\t'right' === mediaPosition\n\t\t\t\t\t? `auto ${ mediaWidth }%`\n\t\t\t\t\t: `${ mediaWidth }% auto`;\n\t\t}\n\t\tconst style = {\n\t\t\tgridTemplateColumns,\n\t\t};\n\n\t\tif ( 'right' === mediaPosition ) {\n\t\t\treturn (\n\t\t\t\t<div { ...useBlockProps.save( { className, style } ) }>\n\t\t\t\t\t<div\n\t\t\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\t\t\tclassName: 'wp-block-media-text__content',\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<figure\n\t\t\t\t\t\tclassName=\"wp-block-media-text__media\"\n\t\t\t\t\t\tstyle={ backgroundStyles }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( mediaTypeRenders[ mediaType ] || noop )() }\n\t\t\t\t\t</figure>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<div { ...useBlockProps.save( { className, style } ) }>\n\t\t\t\t<figure\n\t\t\t\t\tclassName=\"wp-block-media-text__media\"\n\t\t\t\t\tstyle={ backgroundStyles }\n\t\t\t\t>\n\t\t\t\t\t{ ( mediaTypeRenders[ mediaType ] || noop )() }\n\t\t\t\t</figure>\n\t\t\t\t<div\n\t\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\t\tclassName: 'wp-block-media-text__content',\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t},\n};\n\n// Version with CSS grid\nconst v4 = {\n\tattributes: v4ToV5BlockAttributes,\n\tsupports: v4ToV5Supports,\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tisStackedOnMobile,\n\t\t\tmediaAlt,\n\t\t\tmediaPosition,\n\t\t\tmediaType,\n\t\t\tmediaUrl,\n\t\t\tmediaWidth,\n\t\t\tmediaId,\n\t\t\tverticalAlignment,\n\t\t\timageFill,\n\t\t\tfocalPoint,\n\t\t\tlinkClass,\n\t\t\thref,\n\t\t\tlinkTarget,\n\t\t\trel,\n\t\t} = attributes;\n\t\tconst mediaSizeSlug =\n\t\t\tattributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG;\n\t\tconst newRel = isEmpty( rel ) ? undefined : rel;\n\n\t\tconst imageClasses = classnames( {\n\t\t\t[ `wp-image-${ mediaId }` ]: mediaId && mediaType === 'image',\n\t\t\t[ `size-${ mediaSizeSlug }` ]: mediaId && mediaType === 'image',\n\t\t} );\n\n\t\tlet image = (\n\t\t\t<img\n\t\t\t\tsrc={ mediaUrl }\n\t\t\t\talt={ mediaAlt }\n\t\t\t\tclassName={ imageClasses || null }\n\t\t\t/>\n\t\t);\n\n\t\tif ( href ) {\n\t\t\timage = (\n\t\t\t\t<a\n\t\t\t\t\tclassName={ linkClass }\n\t\t\t\t\thref={ href }\n\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\trel={ newRel }\n\t\t\t\t>\n\t\t\t\t\t{ image }\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\tconst mediaTypeRenders = {\n\t\t\timage: () => image,\n\t\t\tvideo: () => <video controls src={ mediaUrl } />,\n\t\t};\n\n\t\tconst className = classnames( {\n\t\t\t'has-media-on-the-right': 'right' === mediaPosition,\n\t\t\t'is-stacked-on-mobile': isStackedOnMobile,\n\t\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]:\n\t\t\t\tverticalAlignment,\n\t\t\t'is-image-fill': imageFill,\n\t\t} );\n\t\tconst backgroundStyles = imageFill\n\t\t\t? v1ToV5ImageFillStyles( mediaUrl, focalPoint )\n\t\t\t: {};\n\n\t\tlet gridTemplateColumns;\n\t\tif ( mediaWidth !== DEFAULT_MEDIA_WIDTH ) {\n\t\t\tgridTemplateColumns =\n\t\t\t\t'right' === mediaPosition\n\t\t\t\t\t? `auto ${ mediaWidth }%`\n\t\t\t\t\t: `${ mediaWidth }% auto`;\n\t\t}\n\t\tconst style = {\n\t\t\tgridTemplateColumns,\n\t\t};\n\n\t\treturn (\n\t\t\t<div { ...useBlockProps.save( { className, style } ) }>\n\t\t\t\t<figure\n\t\t\t\t\tclassName=\"wp-block-media-text__media\"\n\t\t\t\t\tstyle={ backgroundStyles }\n\t\t\t\t>\n\t\t\t\t\t{ ( mediaTypeRenders[ mediaType ] || noop )() }\n\t\t\t\t</figure>\n\t\t\t\t<div\n\t\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\t\tclassName: 'wp-block-media-text__content',\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t},\n};\n\nconst v3 = {\n\tattributes: {\n\t\t...baseAttributes,\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tmediaLink: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tlinkDestination: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tlinkTarget: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'figure a',\n\t\t\tattribute: 'target',\n\t\t},\n\t\thref: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'figure a',\n\t\t\tattribute: 'href',\n\t\t},\n\t\trel: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'figure a',\n\t\t\tattribute: 'rel',\n\t\t},\n\t\tlinkClass: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'figure a',\n\t\t\tattribute: 'class',\n\t\t},\n\t\tverticalAlignment: {\n\t\t\ttype: 'string',\n\t\t},\n\t\timageFill: {\n\t\t\ttype: 'boolean',\n\t\t},\n\t\tfocalPoint: {\n\t\t\ttype: 'object',\n\t\t},\n\t},\n\tmigrate: migrateCustomColors,\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundColor,\n\t\t\tcustomBackgroundColor,\n\t\t\tisStackedOnMobile,\n\t\t\tmediaAlt,\n\t\t\tmediaPosition,\n\t\t\tmediaType,\n\t\t\tmediaUrl,\n\t\t\tmediaWidth,\n\t\t\tmediaId,\n\t\t\tverticalAlignment,\n\t\t\timageFill,\n\t\t\tfocalPoint,\n\t\t\tlinkClass,\n\t\t\thref,\n\t\t\tlinkTarget,\n\t\t\trel,\n\t\t} = attributes;\n\t\tconst newRel = isEmpty( rel ) ? undefined : rel;\n\n\t\tlet image = (\n\t\t\t<img\n\t\t\t\tsrc={ mediaUrl }\n\t\t\t\talt={ mediaAlt }\n\t\t\t\tclassName={\n\t\t\t\t\tmediaId && mediaType === 'image'\n\t\t\t\t\t\t? `wp-image-${ mediaId }`\n\t\t\t\t\t\t: null\n\t\t\t\t}\n\t\t\t/>\n\t\t);\n\n\t\tif ( href ) {\n\t\t\timage = (\n\t\t\t\t<a\n\t\t\t\t\tclassName={ linkClass }\n\t\t\t\t\thref={ href }\n\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\trel={ newRel }\n\t\t\t\t>\n\t\t\t\t\t{ image }\n\t\t\t\t</a>\n\t\t\t);\n\t\t}\n\n\t\tconst mediaTypeRenders = {\n\t\t\timage: () => image,\n\t\t\tvideo: () => <video controls src={ mediaUrl } />,\n\t\t};\n\t\tconst backgroundClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\tbackgroundColor\n\t\t);\n\t\tconst className = classnames( {\n\t\t\t'has-media-on-the-right': 'right' === mediaPosition,\n\t\t\t'has-background': backgroundClass || customBackgroundColor,\n\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t'is-stacked-on-mobile': isStackedOnMobile,\n\t\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]:\n\t\t\t\tverticalAlignment,\n\t\t\t'is-image-fill': imageFill,\n\t\t} );\n\t\tconst backgroundStyles = imageFill\n\t\t\t? v1ToV5ImageFillStyles( mediaUrl, focalPoint )\n\t\t\t: {};\n\n\t\tlet gridTemplateColumns;\n\t\tif ( mediaWidth !== DEFAULT_MEDIA_WIDTH ) {\n\t\t\tgridTemplateColumns =\n\t\t\t\t'right' === mediaPosition\n\t\t\t\t\t? `auto ${ mediaWidth }%`\n\t\t\t\t\t: `${ mediaWidth }% auto`;\n\t\t}\n\t\tconst style = {\n\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t? undefined\n\t\t\t\t: customBackgroundColor,\n\t\t\tgridTemplateColumns,\n\t\t};\n\t\treturn (\n\t\t\t<div className={ className } style={ style }>\n\t\t\t\t<figure\n\t\t\t\t\tclassName=\"wp-block-media-text__media\"\n\t\t\t\t\tstyle={ backgroundStyles }\n\t\t\t\t>\n\t\t\t\t\t{ ( mediaTypeRenders[ mediaType ] || noop )() }\n\t\t\t\t</figure>\n\t\t\t\t<div className=\"wp-block-media-text__content\">\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n};\n\nconst v2 = {\n\tattributes: {\n\t\t...baseAttributes,\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tmediaUrl: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'figure video,figure img',\n\t\t\tattribute: 'src',\n\t\t},\n\t\tverticalAlignment: {\n\t\t\ttype: 'string',\n\t\t},\n\t\timageFill: {\n\t\t\ttype: 'boolean',\n\t\t},\n\t\tfocalPoint: {\n\t\t\ttype: 'object',\n\t\t},\n\t},\n\tmigrate: migrateCustomColors,\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundColor,\n\t\t\tcustomBackgroundColor,\n\t\t\tisStackedOnMobile,\n\t\t\tmediaAlt,\n\t\t\tmediaPosition,\n\t\t\tmediaType,\n\t\t\tmediaUrl,\n\t\t\tmediaWidth,\n\t\t\tmediaId,\n\t\t\tverticalAlignment,\n\t\t\timageFill,\n\t\t\tfocalPoint,\n\t\t} = attributes;\n\t\tconst mediaTypeRenders = {\n\t\t\timage: () => (\n\t\t\t\t<img\n\t\t\t\t\tsrc={ mediaUrl }\n\t\t\t\t\talt={ mediaAlt }\n\t\t\t\t\tclassName={\n\t\t\t\t\t\tmediaId && mediaType === 'image'\n\t\t\t\t\t\t\t? `wp-image-${ mediaId }`\n\t\t\t\t\t\t\t: null\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t),\n\t\t\tvideo: () => <video controls src={ mediaUrl } />,\n\t\t};\n\t\tconst backgroundClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\tbackgroundColor\n\t\t);\n\t\tconst className = classnames( {\n\t\t\t'has-media-on-the-right': 'right' === mediaPosition,\n\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t'is-stacked-on-mobile': isStackedOnMobile,\n\t\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]:\n\t\t\t\tverticalAlignment,\n\t\t\t'is-image-fill': imageFill,\n\t\t} );\n\t\tconst backgroundStyles = imageFill\n\t\t\t? v1ToV5ImageFillStyles( mediaUrl, focalPoint )\n\t\t\t: {};\n\n\t\tlet gridTemplateColumns;\n\t\tif ( mediaWidth !== DEFAULT_MEDIA_WIDTH ) {\n\t\t\tgridTemplateColumns =\n\t\t\t\t'right' === mediaPosition\n\t\t\t\t\t? `auto ${ mediaWidth }%`\n\t\t\t\t\t: `${ mediaWidth }% auto`;\n\t\t}\n\t\tconst style = {\n\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t? undefined\n\t\t\t\t: customBackgroundColor,\n\t\t\tgridTemplateColumns,\n\t\t};\n\t\treturn (\n\t\t\t<div className={ className } style={ style }>\n\t\t\t\t<figure\n\t\t\t\t\tclassName=\"wp-block-media-text__media\"\n\t\t\t\t\tstyle={ backgroundStyles }\n\t\t\t\t>\n\t\t\t\t\t{ ( mediaTypeRenders[ mediaType ] || noop )() }\n\t\t\t\t</figure>\n\t\t\t\t<div className=\"wp-block-media-text__content\">\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n};\n\nconst v1 = {\n\tattributes: {\n\t\t...baseAttributes,\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tmediaUrl: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'figure video,figure img',\n\t\t\tattribute: 'src',\n\t\t},\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tbackgroundColor,\n\t\t\tcustomBackgroundColor,\n\t\t\tisStackedOnMobile,\n\t\t\tmediaAlt,\n\t\t\tmediaPosition,\n\t\t\tmediaType,\n\t\t\tmediaUrl,\n\t\t\tmediaWidth,\n\t\t} = attributes;\n\t\tconst mediaTypeRenders = {\n\t\t\timage: () => <img src={ mediaUrl } alt={ mediaAlt } />,\n\t\t\tvideo: () => <video controls src={ mediaUrl } />,\n\t\t};\n\t\tconst backgroundClass = getColorClassName(\n\t\t\t'background-color',\n\t\t\tbackgroundColor\n\t\t);\n\t\tconst className = classnames( {\n\t\t\t'has-media-on-the-right': 'right' === mediaPosition,\n\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t'is-stacked-on-mobile': isStackedOnMobile,\n\t\t} );\n\n\t\tlet gridTemplateColumns;\n\t\tif ( mediaWidth !== DEFAULT_MEDIA_WIDTH ) {\n\t\t\tgridTemplateColumns =\n\t\t\t\t'right' === mediaPosition\n\t\t\t\t\t? `auto ${ mediaWidth }%`\n\t\t\t\t\t: `${ mediaWidth }% auto`;\n\t\t}\n\t\tconst style = {\n\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t? undefined\n\t\t\t\t: customBackgroundColor,\n\t\t\tgridTemplateColumns,\n\t\t};\n\t\treturn (\n\t\t\t<div className={ className } style={ style }>\n\t\t\t\t<figure className=\"wp-block-media-text__media\">\n\t\t\t\t\t{ ( mediaTypeRenders[ mediaType ] || noop )() }\n\t\t\t\t</figure>\n\t\t\t\t<div className=\"wp-block-media-text__content\">\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n};\n\nexport default [ v5, v4, v3, v2, v1 ];\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst pullLeft = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 18h6V6H4v12zm9-9.5V10h7V8.5h-7zm0 7h7V14h-7v1.5z\" />\n\t</SVG>\n);\n\nexport default pullLeft;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst pullRight = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M14 6v12h6V6h-6zM4 10h7V8.5H4V10zm0 5.5h7V14H4v1.5z\" />\n\t</SVG>\n);\n\nexport default pullRight;\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/components';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18 2l2 4h-2l-2-4h-3l2 4h-2l-2-4h-1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V2zm2 12H10V4.4L11.8 8H20z\" />\n\t\t<Path d=\"M14 20H4V10h3V8H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3h-2z\" />\n\t\t<Path d=\"M5 19h8l-1.59-2H9.24l-.84 1.1L7 16.3 5 19z\" />\n\t</SVG>\n);\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { ResizableBox, Spinner } from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\nimport { forwardRef } from '@wordpress/element';\nimport { isBlobURL } from '@wordpress/blob';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport icon from './media-container-icon';\n\n/**\n * Constants\n */\nconst ALLOWED_MEDIA_TYPES = [ 'image', 'video' ];\nconst noop = () => {};\n\nexport function imageFillStyles( url, focalPoint ) {\n\treturn url\n\t\t? {\n\t\t\t\tbackgroundImage: `url(${ url })`,\n\t\t\t\tbackgroundPosition: focalPoint\n\t\t\t\t\t? `${ Math.round( focalPoint.x * 100 ) }% ${ Math.round(\n\t\t\t\t\t\t\tfocalPoint.y * 100\n\t\t\t\t\t  ) }%`\n\t\t\t\t\t: `50% 50%`,\n\t\t  }\n\t\t: {};\n}\n\nconst ResizableBoxContainer = forwardRef(\n\t( { isSelected, isStackedOnMobile, ...props }, ref ) => {\n\t\tconst isMobile = useViewportMatch( 'small', '<' );\n\t\treturn (\n\t\t\t<ResizableBox\n\t\t\t\tref={ ref }\n\t\t\t\tshowHandle={\n\t\t\t\t\tisSelected && ( ! isMobile || ! isStackedOnMobile )\n\t\t\t\t}\n\t\t\t\t{ ...props }\n\t\t\t/>\n\t\t);\n\t}\n);\n\nfunction ToolbarEditButton( { mediaId, mediaUrl, onSelectMedia } ) {\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ mediaId }\n\t\t\t\tmediaURL={ mediaUrl }\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\taccept=\"image/*,video/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t/>\n\t\t</BlockControls>\n\t);\n}\n\nfunction PlaceholderContainer( { className, mediaUrl, onSelectMedia } ) {\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\treturn (\n\t\t<MediaPlaceholder\n\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\tlabels={ {\n\t\t\t\ttitle: __( 'Media area' ),\n\t\t\t} }\n\t\t\tclassName={ className }\n\t\t\tonSelect={ onSelectMedia }\n\t\t\taccept=\"image/*,video/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tonError={ onUploadError }\n\t\t\tdisableMediaButtons={ mediaUrl }\n\t\t/>\n\t);\n}\n\nfunction MediaContainer( props, ref ) {\n\tconst {\n\t\tclassName,\n\t\tcommitWidthChange,\n\t\tfocalPoint,\n\t\timageFill,\n\t\tisSelected,\n\t\tisStackedOnMobile,\n\t\tmediaAlt,\n\t\tmediaId,\n\t\tmediaPosition,\n\t\tmediaType,\n\t\tmediaUrl,\n\t\tmediaWidth,\n\t\tonSelectMedia,\n\t\tonWidthChange,\n\t\tisContentLocked,\n\t} = props;\n\n\tconst isTemporaryMedia = ! mediaId && isBlobURL( mediaUrl );\n\n\tconst { toggleSelection } = useDispatch( blockEditorStore );\n\n\tif ( mediaUrl ) {\n\t\tconst onResizeStart = () => {\n\t\t\ttoggleSelection( false );\n\t\t};\n\t\tconst onResize = ( event, direction, elt ) => {\n\t\t\tonWidthChange( parseInt( elt.style.width ) );\n\t\t};\n\t\tconst onResizeStop = ( event, direction, elt ) => {\n\t\t\ttoggleSelection( true );\n\t\t\tcommitWidthChange( parseInt( elt.style.width ) );\n\t\t};\n\t\tconst enablePositions = {\n\t\t\tright: ! isContentLocked && mediaPosition === 'left',\n\t\t\tleft: ! isContentLocked && mediaPosition === 'right',\n\t\t};\n\n\t\tconst backgroundStyles =\n\t\t\tmediaType === 'image' && imageFill\n\t\t\t\t? imageFillStyles( mediaUrl, focalPoint )\n\t\t\t\t: {};\n\n\t\tconst mediaTypeRenderers = {\n\t\t\timage: () => <img src={ mediaUrl } alt={ mediaAlt } />,\n\t\t\tvideo: () => <video controls src={ mediaUrl } />,\n\t\t};\n\n\t\treturn (\n\t\t\t<ResizableBoxContainer\n\t\t\t\tas=\"figure\"\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\tclassName,\n\t\t\t\t\t'editor-media-container__resizer',\n\t\t\t\t\t{ 'is-transient': isTemporaryMedia }\n\t\t\t\t) }\n\t\t\t\tstyle={ backgroundStyles }\n\t\t\t\tsize={ { width: mediaWidth + '%' } }\n\t\t\t\tminWidth=\"10%\"\n\t\t\t\tmaxWidth=\"100%\"\n\t\t\t\tenable={ enablePositions }\n\t\t\t\tonResizeStart={ onResizeStart }\n\t\t\t\tonResize={ onResize }\n\t\t\t\tonResizeStop={ onResizeStop }\n\t\t\t\taxis=\"x\"\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tisStackedOnMobile={ isStackedOnMobile }\n\t\t\t\tref={ ref }\n\t\t\t>\n\t\t\t\t<ToolbarEditButton\n\t\t\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\t\t\tmediaUrl={ mediaUrl }\n\t\t\t\t\tmediaId={ mediaId }\n\t\t\t\t/>\n\t\t\t\t{ ( mediaTypeRenderers[ mediaType ] || noop )() }\n\t\t\t\t{ isTemporaryMedia && <Spinner /> }\n\t\t\t\t<PlaceholderContainer { ...props } />\n\t\t\t</ResizableBoxContainer>\n\t\t);\n\t}\n\n\treturn <PlaceholderContainer { ...props } />;\n}\n\nexport default forwardRef( MediaContainer );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { map, filter } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { useState, useRef } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tBlockVerticalAlignmentControl,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tuseBlockProps,\n\t__experimentalImageURLInputUI as ImageURLInputUI,\n\t__experimentalImageSizeControl as ImageSizeControl,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tRangeControl,\n\tTextareaControl,\n\tToggleControl,\n\tToolbarButton,\n\tExternalLink,\n\tFocalPointPicker,\n} from '@wordpress/components';\nimport { isBlobURL, getBlobTypeByURL } from '@wordpress/blob';\nimport { pullLeft, pullRight } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport MediaContainer from './media-container';\nimport { DEFAULT_MEDIA_SIZE_SLUG } from './constants';\n\n/**\n * Constants\n */\nconst TEMPLATE = [\n\t[\n\t\t'core/paragraph',\n\t\t{\n\t\t\tplaceholder: _x( 'Content…', 'content placeholder' ),\n\t\t},\n\t],\n];\n\n// this limits the resize to a safe zone to avoid making broken layouts\nconst WIDTH_CONSTRAINT_PERCENTAGE = 15;\nconst applyWidthConstraints = ( width ) =>\n\tMath.max(\n\t\tWIDTH_CONSTRAINT_PERCENTAGE,\n\t\tMath.min( width, 100 - WIDTH_CONSTRAINT_PERCENTAGE )\n\t);\n\nconst LINK_DESTINATION_MEDIA = 'media';\nconst LINK_DESTINATION_ATTACHMENT = 'attachment';\n\nfunction getImageSourceUrlBySizeSlug( image, slug ) {\n\t// eslint-disable-next-line camelcase\n\treturn image?.media_details?.sizes?.[ slug ]?.source_url;\n}\n\nfunction attributesFromMedia( {\n\tattributes: { linkDestination, href },\n\tsetAttributes,\n} ) {\n\treturn ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\tmediaAlt: undefined,\n\t\t\t\tmediaId: undefined,\n\t\t\t\tmediaType: undefined,\n\t\t\t\tmediaUrl: undefined,\n\t\t\t\tmediaLink: undefined,\n\t\t\t\thref: undefined,\n\t\t\t\tfocalPoint: undefined,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tmedia.type = getBlobTypeByURL( media.url );\n\t\t}\n\n\t\tlet mediaType;\n\t\tlet src;\n\t\t// For media selections originated from a file upload.\n\t\tif ( media.media_type ) {\n\t\t\tif ( media.media_type === 'image' ) {\n\t\t\t\tmediaType = 'image';\n\t\t\t} else {\n\t\t\t\t// only images and videos are accepted so if the media_type is not an image we can assume it is a video.\n\t\t\t\t// video contain the media type of 'file' in the object returned from the rest api.\n\t\t\t\tmediaType = 'video';\n\t\t\t}\n\t\t} else {\n\t\t\t// For media selections originated from existing files in the media library.\n\t\t\tmediaType = media.type;\n\t\t}\n\n\t\tif ( mediaType === 'image' ) {\n\t\t\t// Try the \"large\" size URL, falling back to the \"full\" size URL below.\n\t\t\tsrc =\n\t\t\t\tmedia.sizes?.large?.url ||\n\t\t\t\t// eslint-disable-next-line camelcase\n\t\t\t\tmedia.media_details?.sizes?.large?.source_url;\n\t\t}\n\n\t\tlet newHref = href;\n\t\tif ( linkDestination === LINK_DESTINATION_MEDIA ) {\n\t\t\t// Update the media link.\n\t\t\tnewHref = media.url;\n\t\t}\n\n\t\t// Check if the image is linked to the attachment page.\n\t\tif ( linkDestination === LINK_DESTINATION_ATTACHMENT ) {\n\t\t\t// Update the media link.\n\t\t\tnewHref = media.link;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmediaAlt: media.alt,\n\t\t\tmediaId: media.id,\n\t\t\tmediaType,\n\t\t\tmediaUrl: src || media.url,\n\t\t\tmediaLink: media.link || undefined,\n\t\t\thref: newHref,\n\t\t\tfocalPoint: undefined,\n\t\t} );\n\t};\n}\n\nfunction MediaTextEdit( { attributes, isSelected, setAttributes, clientId } ) {\n\tconst {\n\t\tfocalPoint,\n\t\thref,\n\t\timageFill,\n\t\tisStackedOnMobile,\n\t\tlinkClass,\n\t\tlinkDestination,\n\t\tlinkTarget,\n\t\tmediaAlt,\n\t\tmediaId,\n\t\tmediaPosition,\n\t\tmediaType,\n\t\tmediaUrl,\n\t\tmediaWidth,\n\t\trel,\n\t\tverticalAlignment,\n\t} = attributes;\n\tconst mediaSizeSlug = attributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG;\n\n\tconst { imageSizes, image, isContentLocked } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __unstableGetContentLockingParent, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tisContentLocked:\n\t\t\t\t\t!! __unstableGetContentLockingParent( clientId ),\n\t\t\t\timage:\n\t\t\t\t\tmediaId && isSelected\n\t\t\t\t\t\t? select( coreStore ).getMedia( mediaId, {\n\t\t\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t  } )\n\t\t\t\t\t\t: null,\n\t\t\t\timageSizes: getSettings()?.imageSizes,\n\t\t\t};\n\t\t},\n\n\t\t[ isSelected, mediaId, clientId ]\n\t);\n\n\tconst refMediaContainer = useRef();\n\tconst imperativeFocalPointPreview = ( value ) => {\n\t\tconst { style } = refMediaContainer.current.resizable;\n\t\tconst { x, y } = value;\n\t\tstyle.backgroundPosition = `${ x * 100 }% ${ y * 100 }%`;\n\t};\n\n\tconst [ temporaryMediaWidth, setTemporaryMediaWidth ] = useState( null );\n\n\tconst onSelectMedia = attributesFromMedia( { attributes, setAttributes } );\n\n\tconst onSetHref = ( props ) => {\n\t\tsetAttributes( props );\n\t};\n\n\tconst onWidthChange = ( width ) => {\n\t\tsetTemporaryMediaWidth( applyWidthConstraints( width ) );\n\t};\n\tconst commitWidthChange = ( width ) => {\n\t\tsetAttributes( {\n\t\t\tmediaWidth: applyWidthConstraints( width ),\n\t\t} );\n\t\tsetTemporaryMediaWidth( applyWidthConstraints( width ) );\n\t};\n\n\tconst classNames = classnames( {\n\t\t'has-media-on-the-right': 'right' === mediaPosition,\n\t\t'is-selected': isSelected,\n\t\t'is-stacked-on-mobile': isStackedOnMobile,\n\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]: verticalAlignment,\n\t\t'is-image-fill': imageFill,\n\t} );\n\tconst widthString = `${ temporaryMediaWidth || mediaWidth }%`;\n\tconst gridTemplateColumns =\n\t\t'right' === mediaPosition\n\t\t\t? `1fr ${ widthString }`\n\t\t\t: `${ widthString } 1fr`;\n\tconst style = {\n\t\tgridTemplateColumns,\n\t\tmsGridColumns: gridTemplateColumns,\n\t};\n\tconst onMediaAltChange = ( newMediaAlt ) => {\n\t\tsetAttributes( { mediaAlt: newMediaAlt } );\n\t};\n\tconst onVerticalAlignmentChange = ( alignment ) => {\n\t\tsetAttributes( { verticalAlignment: alignment } );\n\t};\n\n\tconst imageSizeOptions = map(\n\t\tfilter( imageSizes, ( { slug } ) =>\n\t\t\tgetImageSourceUrlBySizeSlug( image, slug )\n\t\t),\n\t\t( { name, slug } ) => ( { value: slug, label: name } )\n\t);\n\tconst updateImage = ( newMediaSizeSlug ) => {\n\t\tconst newUrl = getImageSourceUrlBySizeSlug( image, newMediaSizeSlug );\n\n\t\tif ( ! newUrl ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmediaUrl: newUrl,\n\t\t\tmediaSizeSlug: newMediaSizeSlug,\n\t\t} );\n\t};\n\n\tconst mediaTextGeneralSettings = (\n\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Stack on mobile' ) }\n\t\t\t\tchecked={ isStackedOnMobile }\n\t\t\t\tonChange={ () =>\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tisStackedOnMobile: ! isStackedOnMobile,\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ mediaType === 'image' && (\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Crop image to fill entire column' ) }\n\t\t\t\t\tchecked={ imageFill }\n\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\timageFill: ! imageFill,\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\t{ imageFill && mediaUrl && mediaType === 'image' && (\n\t\t\t\t<FocalPointPicker\n\t\t\t\t\tlabel={ __( 'Focal point picker' ) }\n\t\t\t\t\turl={ mediaUrl }\n\t\t\t\t\tvalue={ focalPoint }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { focalPoint: value } )\n\t\t\t\t\t}\n\t\t\t\t\tonDragStart={ imperativeFocalPointPreview }\n\t\t\t\t\tonDrag={ imperativeFocalPointPreview }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ mediaType === 'image' && (\n\t\t\t\t<TextareaControl\n\t\t\t\t\tlabel={ __( 'Alt text (alternative text)' ) }\n\t\t\t\t\tvalue={ mediaAlt }\n\t\t\t\t\tonChange={ onMediaAltChange }\n\t\t\t\t\thelp={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ExternalLink href=\"https://www.w3.org/WAI/tutorials/images/decision-tree\">\n\t\t\t\t\t\t\t\t{ __( 'Describe the purpose of the image' ) }\n\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Leave empty if the image is purely decorative.'\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\t{ mediaType === 'image' && (\n\t\t\t\t<ImageSizeControl\n\t\t\t\t\tonChangeImage={ updateImage }\n\t\t\t\t\tslug={ mediaSizeSlug }\n\t\t\t\t\timageSizeOptions={ imageSizeOptions }\n\t\t\t\t\tisResizable={ false }\n\t\t\t\t\timageSizeHelp={ __( 'Select which image size to load.' ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ mediaUrl && (\n\t\t\t\t<RangeControl\n\t\t\t\t\tlabel={ __( 'Media width' ) }\n\t\t\t\t\tvalue={ temporaryMediaWidth || mediaWidth }\n\t\t\t\t\tonChange={ commitWidthChange }\n\t\t\t\t\tmin={ WIDTH_CONSTRAINT_PERCENTAGE }\n\t\t\t\t\tmax={ 100 - WIDTH_CONSTRAINT_PERCENTAGE }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</PanelBody>\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classNames,\n\t\tstyle,\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{ className: 'wp-block-media-text__content' },\n\t\t{ template: TEMPLATE }\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>{ mediaTextGeneralSettings }</InspectorControls>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t{ ! isContentLocked && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockVerticalAlignmentControl\n\t\t\t\t\t\t\tonChange={ onVerticalAlignmentChange }\n\t\t\t\t\t\t\tvalue={ verticalAlignment }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ticon={ pullLeft }\n\t\t\t\t\t\t\ttitle={ __( 'Show media on left' ) }\n\t\t\t\t\t\t\tisActive={ mediaPosition === 'left' }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { mediaPosition: 'left' } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ticon={ pullRight }\n\t\t\t\t\t\t\ttitle={ __( 'Show media on right' ) }\n\t\t\t\t\t\t\tisActive={ mediaPosition === 'right' }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { mediaPosition: 'right' } )\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\n\t\t\t\t{ mediaType === 'image' && (\n\t\t\t\t\t<ImageURLInputUI\n\t\t\t\t\t\turl={ href || '' }\n\t\t\t\t\t\tonChangeUrl={ onSetHref }\n\t\t\t\t\t\tlinkDestination={ linkDestination }\n\t\t\t\t\t\tmediaType={ mediaType }\n\t\t\t\t\t\tmediaUrl={ image && image.source_url }\n\t\t\t\t\t\tmediaLink={ image && image.link }\n\t\t\t\t\t\tlinkTarget={ linkTarget }\n\t\t\t\t\t\tlinkClass={ linkClass }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ mediaPosition === 'right' && <div { ...innerBlocksProps } /> }\n\t\t\t\t<MediaContainer\n\t\t\t\t\tclassName=\"wp-block-media-text__media\"\n\t\t\t\t\tonSelectMedia={ onSelectMedia }\n\t\t\t\t\tonWidthChange={ onWidthChange }\n\t\t\t\t\tcommitWidthChange={ commitWidthChange }\n\t\t\t\t\tref={ refMediaContainer }\n\t\t\t\t\t{ ...{\n\t\t\t\t\t\tfocalPoint,\n\t\t\t\t\t\timageFill,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tisStackedOnMobile,\n\t\t\t\t\t\tmediaAlt,\n\t\t\t\t\t\tmediaId,\n\t\t\t\t\t\tmediaPosition,\n\t\t\t\t\t\tmediaType,\n\t\t\t\t\t\tmediaUrl,\n\t\t\t\t\t\tmediaWidth,\n\t\t\t\t\t\tisContentLocked,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ mediaPosition !== 'right' && <div { ...innerBlocksProps } /> }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default MediaTextEdit;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps, useBlockProps } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { imageFillStyles } from './media-container';\nimport { DEFAULT_MEDIA_SIZE_SLUG } from './constants';\n\nconst DEFAULT_MEDIA_WIDTH = 50;\nconst noop = () => {};\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\tisStackedOnMobile,\n\t\tmediaAlt,\n\t\tmediaPosition,\n\t\tmediaType,\n\t\tmediaUrl,\n\t\tmediaWidth,\n\t\tmediaId,\n\t\tverticalAlignment,\n\t\timageFill,\n\t\tfocalPoint,\n\t\tlinkClass,\n\t\thref,\n\t\tlinkTarget,\n\t\trel,\n\t} = attributes;\n\tconst mediaSizeSlug = attributes.mediaSizeSlug || DEFAULT_MEDIA_SIZE_SLUG;\n\tconst newRel = isEmpty( rel ) ? undefined : rel;\n\n\tconst imageClasses = classnames( {\n\t\t[ `wp-image-${ mediaId }` ]: mediaId && mediaType === 'image',\n\t\t[ `size-${ mediaSizeSlug }` ]: mediaId && mediaType === 'image',\n\t} );\n\n\tlet image = (\n\t\t<img\n\t\t\tsrc={ mediaUrl }\n\t\t\talt={ mediaAlt }\n\t\t\tclassName={ imageClasses || null }\n\t\t/>\n\t);\n\n\tif ( href ) {\n\t\timage = (\n\t\t\t<a\n\t\t\t\tclassName={ linkClass }\n\t\t\t\thref={ href }\n\t\t\t\ttarget={ linkTarget }\n\t\t\t\trel={ newRel }\n\t\t\t>\n\t\t\t\t{ image }\n\t\t\t</a>\n\t\t);\n\t}\n\n\tconst mediaTypeRenders = {\n\t\timage: () => image,\n\t\tvideo: () => <video controls src={ mediaUrl } />,\n\t};\n\tconst className = classnames( {\n\t\t'has-media-on-the-right': 'right' === mediaPosition,\n\t\t'is-stacked-on-mobile': isStackedOnMobile,\n\t\t[ `is-vertically-aligned-${ verticalAlignment }` ]: verticalAlignment,\n\t\t'is-image-fill': imageFill,\n\t} );\n\tconst backgroundStyles = imageFill\n\t\t? imageFillStyles( mediaUrl, focalPoint )\n\t\t: {};\n\n\tlet gridTemplateColumns;\n\tif ( mediaWidth !== DEFAULT_MEDIA_WIDTH ) {\n\t\tgridTemplateColumns =\n\t\t\t'right' === mediaPosition\n\t\t\t\t? `auto ${ mediaWidth }%`\n\t\t\t\t: `${ mediaWidth }% auto`;\n\t}\n\tconst style = {\n\t\tgridTemplateColumns,\n\t};\n\n\tif ( 'right' === mediaPosition ) {\n\t\treturn (\n\t\t\t<div { ...useBlockProps.save( { className, style } ) }>\n\t\t\t\t<div\n\t\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\t\tclassName: 'wp-block-media-text__content',\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t\t<figure\n\t\t\t\t\tclassName=\"wp-block-media-text__media\"\n\t\t\t\t\tstyle={ backgroundStyles }\n\t\t\t\t>\n\t\t\t\t\t{ ( mediaTypeRenders[ mediaType ] || noop )() }\n\t\t\t\t</figure>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn (\n\t\t<div { ...useBlockProps.save( { className, style } ) }>\n\t\t\t<figure\n\t\t\t\tclassName=\"wp-block-media-text__media\"\n\t\t\t\tstyle={ backgroundStyles }\n\t\t\t>\n\t\t\t\t{ ( mediaTypeRenders[ mediaType ] || noop )() }\n\t\t\t</figure>\n\t\t\t<div\n\t\t\t\t{ ...useInnerBlocksProps.save( {\n\t\t\t\t\tclassName: 'wp-block-media-text__content',\n\t\t\t\t} ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/image' ],\n\t\t\ttransform: ( { alt, url, id, anchor } ) =>\n\t\t\t\tcreateBlock( 'core/media-text', {\n\t\t\t\t\tmediaAlt: alt,\n\t\t\t\t\tmediaId: id,\n\t\t\t\t\tmediaUrl: url,\n\t\t\t\t\tmediaType: 'image',\n\t\t\t\t\tanchor,\n\t\t\t\t} ),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/video' ],\n\t\t\ttransform: ( { src, id, anchor } ) =>\n\t\t\t\tcreateBlock( 'core/media-text', {\n\t\t\t\t\tmediaId: id,\n\t\t\t\t\tmediaUrl: src,\n\t\t\t\t\tmediaType: 'video',\n\t\t\t\t\tanchor,\n\t\t\t\t} ),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/cover' ],\n\t\t\ttransform: (\n\t\t\t\t{\n\t\t\t\t\talign,\n\t\t\t\t\talt,\n\t\t\t\t\tanchor,\n\t\t\t\t\tbackgroundType,\n\t\t\t\t\tcustomGradient,\n\t\t\t\t\tcustomOverlayColor,\n\t\t\t\t\tgradient,\n\t\t\t\t\tid,\n\t\t\t\t\toverlayColor,\n\t\t\t\t\turl,\n\t\t\t\t},\n\t\t\t\tinnerBlocks\n\t\t\t) => {\n\t\t\t\tlet additionalAttributes = {};\n\n\t\t\t\tif ( customGradient ) {\n\t\t\t\t\tadditionalAttributes = {\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\tgradient: customGradient,\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} else if ( customOverlayColor ) {\n\t\t\t\t\tadditionalAttributes = {\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\tbackground: customOverlayColor,\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\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/media-text',\n\t\t\t\t\t{\n\t\t\t\t\t\talign,\n\t\t\t\t\t\tanchor,\n\t\t\t\t\t\tbackgroundColor: overlayColor,\n\t\t\t\t\t\tgradient,\n\t\t\t\t\t\tmediaAlt: alt,\n\t\t\t\t\t\tmediaId: id,\n\t\t\t\t\t\tmediaType: backgroundType,\n\t\t\t\t\t\tmediaUrl: url,\n\t\t\t\t\t\t...additionalAttributes,\n\t\t\t\t\t},\n\t\t\t\t\tinnerBlocks\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/image' ],\n\t\t\tisMatch: ( { mediaType, mediaUrl } ) => {\n\t\t\t\treturn ! mediaUrl || mediaType === 'image';\n\t\t\t},\n\t\t\ttransform: ( { mediaAlt, mediaId, mediaUrl, anchor } ) => {\n\t\t\t\treturn createBlock( 'core/image', {\n\t\t\t\t\talt: mediaAlt,\n\t\t\t\t\tid: mediaId,\n\t\t\t\t\turl: mediaUrl,\n\t\t\t\t\tanchor,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/video' ],\n\t\t\tisMatch: ( { mediaType, mediaUrl } ) => {\n\t\t\t\treturn ! mediaUrl || mediaType === 'video';\n\t\t\t},\n\t\t\ttransform: ( { mediaId, mediaUrl, anchor } ) => {\n\t\t\t\treturn createBlock( 'core/video', {\n\t\t\t\t\tid: mediaId,\n\t\t\t\t\tsrc: mediaUrl,\n\t\t\t\t\tanchor,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/cover' ],\n\t\t\ttransform: (\n\t\t\t\t{\n\t\t\t\t\talign,\n\t\t\t\t\tanchor,\n\t\t\t\t\tbackgroundColor,\n\t\t\t\t\tfocalPoint,\n\t\t\t\t\tgradient,\n\t\t\t\t\tmediaAlt,\n\t\t\t\t\tmediaId,\n\t\t\t\t\tmediaType,\n\t\t\t\t\tmediaUrl,\n\t\t\t\t\tstyle,\n\t\t\t\t\ttextColor,\n\t\t\t\t},\n\t\t\t\tinnerBlocks\n\t\t\t) => {\n\t\t\t\tconst additionalAttributes = {};\n\n\t\t\t\tif ( style?.color?.gradient ) {\n\t\t\t\t\tadditionalAttributes.customGradient = style.color.gradient;\n\t\t\t\t} else if ( style?.color?.background ) {\n\t\t\t\t\tadditionalAttributes.customOverlayColor =\n\t\t\t\t\t\tstyle.color.background;\n\t\t\t\t}\n\n\t\t\t\tconst coverAttributes = {\n\t\t\t\t\talign,\n\t\t\t\t\talt: mediaAlt,\n\t\t\t\t\tanchor,\n\t\t\t\t\tbackgroundType: mediaType,\n\t\t\t\t\tdimRatio: !! mediaUrl ? 50 : 100,\n\t\t\t\t\tfocalPoint,\n\t\t\t\t\tgradient,\n\t\t\t\t\tid: mediaId,\n\t\t\t\t\toverlayColor: backgroundColor,\n\t\t\t\t\turl: mediaUrl,\n\t\t\t\t\t...additionalAttributes,\n\t\t\t\t};\n\t\t\t\tconst customTextColor = style?.color?.text;\n\n\t\t\t\t// Attempt to maintain any text color selection.\n\t\t\t\t// Cover block's do not opt into color block support so we\n\t\t\t\t// cannot directly copy the color attributes across.\n\t\t\t\tif ( ! textColor && ! customTextColor ) {\n\t\t\t\t\treturn createBlock(\n\t\t\t\t\t\t'core/cover',\n\t\t\t\t\t\tcoverAttributes,\n\t\t\t\t\t\tinnerBlocks\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst coloredInnerBlocks = innerBlocks.map( ( innerBlock ) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tattributes: { style: innerStyle },\n\t\t\t\t\t} = innerBlock;\n\n\t\t\t\t\t// Only apply the media and text color if the inner block\n\t\t\t\t\t// doesn't set its own color block support selection.\n\t\t\t\t\tif (\n\t\t\t\t\t\tinnerBlock.attributes.textColor ||\n\t\t\t\t\t\tinnerStyle?.color?.text\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn innerBlock;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst newAttributes = { textColor };\n\n\t\t\t\t\t// Only add or extend inner block's style object if we have\n\t\t\t\t\t// a custom text color from the media & text block.\n\t\t\t\t\tif ( customTextColor ) {\n\t\t\t\t\t\tnewAttributes.style = {\n\t\t\t\t\t\t\t...innerStyle,\n\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t...innerStyle?.color,\n\t\t\t\t\t\t\t\ttext: customTextColor,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn createBlock(\n\t\t\t\t\t\tinnerBlock.name,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...innerBlock.attributes,\n\t\t\t\t\t\t\t...newAttributes,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinnerBlock.innerBlocks\n\t\t\t\t\t);\n\t\t\t\t} );\n\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/cover',\n\t\t\t\t\tcoverAttributes,\n\t\t\t\t\tcoloredInnerBlocks\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { mediaAndText 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\tviewportWidth: 601, // Columns collapse \"@media (max-width: 600px)\".\n\t\tattributes: {\n\t\t\tmediaType: 'image',\n\t\t\tmediaUrl:\n\t\t\t\t'https://s.w.org/images/core/5.3/Biologia_Centrali-Americana_-_Cantorchilus_semibadius_1902.jpg',\n\t\t},\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcontent: __(\n\t\t\t\t\t\t'The wren<br>Earns his living<br>Noiselessly.'\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcontent: __( '— Kobayashi Issa (一茶)' ),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"dom\"];","/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { RawHTML } from '@wordpress/element';\nimport { Button } from '@wordpress/components';\nimport { createBlock } from '@wordpress/blocks';\nimport { withDispatch, useSelect } from '@wordpress/data';\nimport {\n\tWarning,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { safeHTML } from '@wordpress/dom';\n\nfunction MissingBlockWarning( { attributes, convertToHTML, clientId } ) {\n\tconst { originalName, originalUndelimitedContent } = attributes;\n\tconst hasContent = !! originalUndelimitedContent;\n\tconst hasHTMLBlock = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canInsertBlockType, getBlockRootClientId } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn canInsertBlockType(\n\t\t\t\t'core/html',\n\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst actions = [];\n\tlet messageHTML;\n\tif ( hasContent && hasHTMLBlock ) {\n\t\tmessageHTML = sprintf(\n\t\t\t/* translators: %s: block name */\n\t\t\t__(\n\t\t\t\t'Your site doesn’t include support for the \"%s\" block. You can leave this block intact, convert its content to a Custom HTML block, or remove it entirely.'\n\t\t\t),\n\t\t\toriginalName\n\t\t);\n\t\tactions.push(\n\t\t\t<Button key=\"convert\" onClick={ convertToHTML } variant=\"primary\">\n\t\t\t\t{ __( 'Keep as HTML' ) }\n\t\t\t</Button>\n\t\t);\n\t} else {\n\t\tmessageHTML = sprintf(\n\t\t\t/* translators: %s: block name */\n\t\t\t__(\n\t\t\t\t'Your site doesn’t include support for the \"%s\" block. You can leave this block intact or remove it entirely.'\n\t\t\t),\n\t\t\toriginalName\n\t\t);\n\t}\n\n\treturn (\n\t\t<div { ...useBlockProps( { className: 'has-warning' } ) }>\n\t\t\t<Warning actions={ actions }>{ messageHTML }</Warning>\n\t\t\t<RawHTML>{ safeHTML( originalUndelimitedContent ) }</RawHTML>\n\t\t</div>\n\t);\n}\n\nconst MissingEdit = withDispatch( ( dispatch, { clientId, attributes } ) => {\n\tconst { replaceBlock } = dispatch( blockEditorStore );\n\treturn {\n\t\tconvertToHTML() {\n\t\t\treplaceBlock(\n\t\t\t\tclientId,\n\t\t\t\tcreateBlock( 'core/html', {\n\t\t\t\t\tcontent: attributes.originalUndelimitedContent,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t};\n} )( MissingBlockWarning );\n\nexport default MissingEdit;\n","/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\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';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\tname,\n\t__experimentalLabel( attributes, { context } ) {\n\t\tif ( context === 'accessibility' ) {\n\t\t\tconst { originalName } = attributes;\n\n\t\t\tconst originalBlockType = originalName\n\t\t\t\t? getBlockType( originalName )\n\t\t\t\t: undefined;\n\n\t\t\tif ( originalBlockType ) {\n\t\t\t\treturn originalBlockType.settings.title || originalName;\n\t\t\t}\n\n\t\t\treturn '';\n\t\t}\n\t},\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { RawHTML } from '@wordpress/element';\n\nexport default function save( { attributes } ) {\n\t// Preserve the missing block's content.\n\treturn <RawHTML>{ attributes.originalContent }</RawHTML>;\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst more = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M4 9v1.5h16V9H4zm12 5.5h4V13h-4v1.5zm-6 0h4V13h-4v1.5zm-6 0h4V13H4v1.5z\" />\n\t</SVG>\n);\n\nexport default more;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PanelBody, ToggleControl } from '@wordpress/components';\nimport { InspectorControls, useBlockProps } from '@wordpress/block-editor';\nimport { ENTER } from '@wordpress/keycodes';\nimport { getDefaultBlockName, createBlock } from '@wordpress/blocks';\n\nconst DEFAULT_TEXT = __( 'Read more' );\n\nexport default function MoreEdit( {\n\tattributes: { customText, noTeaser },\n\tinsertBlocksAfter,\n\tsetAttributes,\n} ) {\n\tconst onChangeInput = ( event ) => {\n\t\tsetAttributes( {\n\t\t\tcustomText:\n\t\t\t\tevent.target.value !== '' ? event.target.value : undefined,\n\t\t} );\n\t};\n\n\tconst onKeyDown = ( { keyCode } ) => {\n\t\tif ( keyCode === ENTER ) {\n\t\t\tinsertBlocksAfter( [ createBlock( getDefaultBlockName() ) ] );\n\t\t}\n\t};\n\n\tconst getHideExcerptHelp = ( checked ) =>\n\t\tchecked\n\t\t\t? __( 'The excerpt is hidden.' )\n\t\t\t: __( 'The excerpt is visible.' );\n\n\tconst toggleHideExcerpt = () => setAttributes( { noTeaser: ! noTeaser } );\n\n\tconst style = {\n\t\twidth: `${ ( customText ? customText : DEFAULT_TEXT ).length + 1.2 }em`,\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t'Hide the excerpt on the full content page'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tchecked={ !! noTeaser }\n\t\t\t\t\t\tonChange={ toggleHideExcerpt }\n\t\t\t\t\t\thelp={ getHideExcerptHelp }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...useBlockProps() }>\n\t\t\t\t<input\n\t\t\t\t\taria-label={ __( '“Read more” link text' ) }\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={ customText }\n\t\t\t\t\tplaceholder={ DEFAULT_TEXT }\n\t\t\t\t\tonChange={ onChangeInput }\n\t\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\t\tstyle={ style }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tschema: {\n\t\t\t\t'wp-block': { attributes: [ 'data-block' ] },\n\t\t\t},\n\t\t\tisMatch: ( node ) =>\n\t\t\t\tnode.dataset && node.dataset.block === 'core/more',\n\t\t\ttransform( node ) {\n\t\t\t\tconst { customText, noTeaser } = node.dataset;\n\t\t\t\tconst attrs = {};\n\t\t\t\t// Don't copy unless defined and not an empty string.\n\t\t\t\tif ( customText ) {\n\t\t\t\t\tattrs.customText = customText;\n\t\t\t\t}\n\t\t\t\t// Special handling for boolean.\n\t\t\t\tif ( noTeaser === '' ) {\n\t\t\t\t\tattrs.noTeaser = true;\n\t\t\t\t}\n\t\t\t\treturn createBlock( 'core/more', attrs );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { more 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__experimentalLabel( attributes, { context } ) {\n\t\tif ( context === 'accessibility' ) {\n\t\t\treturn attributes.customText;\n\t\t}\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { RawHTML } from '@wordpress/element';\n\nexport default function save( { attributes: { customText, noTeaser } } ) {\n\tconst moreTag = customText ? `<!--more ${ customText }-->` : '<!--more-->';\n\n\tconst noTeaserTag = noTeaser ? '<!--noteaser-->' : '';\n\n\treturn (\n\t\t<RawHTML>\n\t\t\t{ [ moreTag, noTeaserTag ].filter( Boolean ).join( '\\n' ) }\n\t\t</RawHTML>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst navigation = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.5c-3.6 0-6.5-2.9-6.5-6.5S8.4 5.5 12 5.5s6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5zM9 16l4.5-3L15 8.4l-4.5 3L9 16z\" />\n\t</SVG>\n);\n\nexport default navigation;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"a11y\"];","/**\n * WordPress dependencies\n */\nimport { cloneElement } from '@wordpress/element';\n\n/** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */\n\n/**\n * Return an SVG icon.\n *\n * @param {IconProps} props icon is the SVG component to render\n *                          size is a number specifiying the icon size in pixels\n *                          Other props will be passed to wrapped SVG component\n *\n * @return {JSX.Element}  Icon component\n */\nfunction Icon( { icon, size = 24, ...props } ) {\n\treturn cloneElement( icon, {\n\t\twidth: size,\n\t\theight: size,\n\t\t...props,\n\t} );\n}\n\nexport default Icon;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst close = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z\" />\n\t</SVG>\n);\n\nexport default close;\n","/**\n * WordPress dependencies\n */\nimport {\n\tstore as coreStore,\n\tuseResourcePermissions,\n} from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\nexport default function useNavigationMenu( ref ) {\n\tconst permissions = useResourcePermissions( 'navigation', ref );\n\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanCreate,\n\t\t\t\tcanUpdate,\n\t\t\t\tcanDelete,\n\t\t\t\tisResolving,\n\t\t\t\thasResolved,\n\t\t\t} = permissions;\n\n\t\t\tconst {\n\t\t\t\tnavigationMenus,\n\t\t\t\tisResolvingNavigationMenus,\n\t\t\t\thasResolvedNavigationMenus,\n\t\t\t} = selectNavigationMenus( select, ref );\n\n\t\t\tconst {\n\t\t\t\tnavigationMenu,\n\t\t\t\tisNavigationMenuResolved,\n\t\t\t\tisNavigationMenuMissing,\n\t\t\t} = selectExistingMenu( select, ref );\n\n\t\t\treturn {\n\t\t\t\tnavigationMenus,\n\t\t\t\tisResolvingNavigationMenus,\n\t\t\t\thasResolvedNavigationMenus,\n\n\t\t\t\tnavigationMenu,\n\t\t\t\tisNavigationMenuResolved,\n\t\t\t\tisNavigationMenuMissing,\n\n\t\t\t\tcanSwitchNavigationMenu: ref\n\t\t\t\t\t? navigationMenus?.length > 1\n\t\t\t\t\t: navigationMenus?.length > 0,\n\n\t\t\t\tcanUserCreateNavigationMenu: canCreate,\n\t\t\t\tisResolvingCanUserCreateNavigationMenu: isResolving,\n\t\t\t\thasResolvedCanUserCreateNavigationMenu: hasResolved,\n\n\t\t\t\tcanUserUpdateNavigationMenu: canUpdate,\n\t\t\t\thasResolvedCanUserUpdateNavigationMenu: ref\n\t\t\t\t\t? hasResolved\n\t\t\t\t\t: undefined,\n\n\t\t\t\tcanUserDeleteNavigationMenu: canDelete,\n\t\t\t\thasResolvedCanUserDeleteNavigationMenu: ref\n\t\t\t\t\t? hasResolved\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\t[ ref, permissions ]\n\t);\n}\n\nfunction selectNavigationMenus( select ) {\n\tconst { getEntityRecords, hasFinishedResolution, isResolving } =\n\t\tselect( coreStore );\n\n\tconst args = [\n\t\t'postType',\n\t\t'wp_navigation',\n\t\t{ per_page: -1, status: [ 'publish', 'draft' ] },\n\t];\n\treturn {\n\t\tnavigationMenus: getEntityRecords( ...args ),\n\t\tisResolvingNavigationMenus: isResolving( 'getEntityRecords', args ),\n\t\thasResolvedNavigationMenus: hasFinishedResolution(\n\t\t\t'getEntityRecords',\n\t\t\targs\n\t\t),\n\t};\n}\n\nfunction selectExistingMenu( select, ref ) {\n\tif ( ! ref ) {\n\t\treturn {\n\t\t\tisNavigationMenuResolved: false,\n\t\t\tisNavigationMenuMissing: true,\n\t\t};\n\t}\n\n\tconst { getEntityRecord, getEditedEntityRecord, hasFinishedResolution } =\n\t\tselect( coreStore );\n\n\tconst args = [ 'postType', 'wp_navigation', ref ];\n\tconst navigationMenu = getEntityRecord( ...args );\n\tconst editedNavigationMenu = getEditedEntityRecord( ...args );\n\tconst hasResolvedNavigationMenu = hasFinishedResolution(\n\t\t'getEditedEntityRecord',\n\t\targs\n\t);\n\n\t// Only published Navigation posts are considered valid.\n\t// Draft Navigation posts are valid only on the editor,\n\t// requiring a post update to publish to show in frontend.\n\t// To achieve that, index.php must reflect this validation only for published.\n\tconst isNavigationMenuPublishedOrDraft =\n\t\teditedNavigationMenu.status === 'publish' ||\n\t\teditedNavigationMenu.status === 'draft';\n\n\treturn {\n\t\tisNavigationMenuResolved: hasResolvedNavigationMenu,\n\t\tisNavigationMenuMissing:\n\t\t\thasResolvedNavigationMenu &&\n\t\t\t( ! navigationMenu || ! isNavigationMenuPublishedOrDraft ),\n\n\t\t// getEditedEntityRecord will return the post regardless of status.\n\t\t// Therefore if the found post is not published then we should ignore it.\n\t\tnavigationMenu: isNavigationMenuPublishedOrDraft\n\t\t\t? editedNavigationMenu\n\t\t\t: null,\n\t};\n}\n","/**\n * WordPress dependencies\n */\nimport { useEntityRecords } from '@wordpress/core-data';\n\n/**\n * @typedef {Object} NavigationEntitiesData\n * @property {Array|undefined} pages                - a collection of WP Post entity objects of post type \"Page\".\n * @property {boolean}         isResolvingPages     - indicates whether the request to fetch pages is currently resolving.\n * @property {boolean}         hasResolvedPages     - indicates whether the request to fetch pages has finished resolving.\n * @property {Array|undefined} menus                - a collection of Menu entity objects.\n * @property {boolean}         isResolvingMenus     - indicates whether the request to fetch menus is currently resolving.\n * @property {boolean}         hasResolvedMenus     - indicates whether the request to fetch menus has finished resolving.\n * @property {Array|undefined} menusItems           - a collection of Menu Item entity objects for the current menuId.\n * @property {boolean}         hasResolvedMenuItems - indicates whether the request to fetch menuItems has finished resolving.\n * @property {boolean}         hasPages             - indicates whether there is currently any data for pages.\n * @property {boolean}         hasMenus             - indicates whether there is currently any data for menus.\n */\n\n/**\n * Manages fetching and resolution state for all entities required\n * for the Navigation block.\n *\n * @param {number} menuId the menu for which to retrieve menuItem data.\n * @return { NavigationEntitiesData } the entity data.\n */\nexport default function useNavigationEntities( menuId ) {\n\tconst {\n\t\trecords: menus,\n\t\tisResolving: isResolvingMenus,\n\t\thasResolved: hasResolvedMenus,\n\t} = useEntityRecords( 'root', 'menu', { per_page: -1, context: 'view' } );\n\n\tconst {\n\t\trecords: pages,\n\t\tisResolving: isResolvingPages,\n\t\thasResolved: hasResolvedPages,\n\t} = useEntityRecords( 'postType', 'page', {\n\t\tparent: 0,\n\t\torder: 'asc',\n\t\torderby: 'id',\n\t\tper_page: -1,\n\t\tcontext: 'view',\n\t} );\n\n\tconst { records: menuItems, hasResolved: hasResolvedMenuItems } =\n\t\tuseEntityRecords(\n\t\t\t'root',\n\t\t\t'menuItem',\n\t\t\t{\n\t\t\t\tmenus: menuId,\n\t\t\t\tper_page: -1,\n\t\t\t\tcontext: 'view',\n\t\t\t},\n\t\t\t{ enabled: !! menuId }\n\t\t);\n\n\treturn {\n\t\tpages,\n\t\tisResolvingPages,\n\t\thasResolvedPages,\n\t\thasPages: !! ( hasResolvedPages && pages?.length ),\n\n\t\tmenus,\n\t\tisResolvingMenus,\n\t\thasResolvedMenus,\n\t\thasMenus: !! ( hasResolvedMenus && menus?.length ),\n\n\t\tmenuItems,\n\t\thasResolvedMenuItems,\n\t};\n}\n","/**\n * WordPress dependencies\n */\nimport { Icon, navigation } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n\nconst PlaceholderPreview = ( { isVisible = true } ) => {\n\treturn (\n\t\t<div\n\t\t\taria-hidden={ ! isVisible ? true : undefined }\n\t\t\tclassName=\"wp-block-navigation-placeholder__preview\"\n\t\t>\n\t\t\t<div className=\"wp-block-navigation-placeholder__actions__indicator\">\n\t\t\t\t<Icon icon={ navigation } />\n\t\t\t\t{ __( 'Navigation' ) }\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default PlaceholderPreview;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst chevronUp = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z\" />\n\t</SVG>\n);\n\nexport default chevronUp;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst chevronDown = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z\" />\n\t</SVG>\n);\n\nexport default chevronDown;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"htmlEntities\"];","/**\n * WordPress dependencies\n */\nimport {\n\tMenuGroup,\n\tMenuItem,\n\tMenuItemsChoice,\n\tDropdownMenu,\n\tButton,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { useEntityProp } from '@wordpress/core-data';\nimport { Icon, chevronUp, chevronDown } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useEffect, useMemo, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\nimport useNavigationEntities from '../use-navigation-entities';\n\nfunction NavigationMenuSelector( {\n\tcurrentMenuId,\n\tonSelectNavigationMenu,\n\tonSelectClassicMenu,\n\tonCreateNew,\n\tactionLabel,\n\tcreateNavigationMenuIsSuccess,\n\tcreateNavigationMenuIsError,\n\ttoggleProps = {},\n} ) {\n\t/* translators: %s: The name of a menu. */\n\tconst createActionLabel = __( \"Create from '%s'\" );\n\n\tconst [ selectorLabel, setSelectorLabel ] = useState( '' );\n\tconst [ isPressed, setIsPressed ] = useState( false );\n\tconst [ enableOptions, setEnableOptions ] = useState( false );\n\tconst [ isCreatingMenu, setIsCreatingMenu ] = useState( false );\n\n\tactionLabel = actionLabel || createActionLabel;\n\n\tconst { menus: classicMenus } = useNavigationEntities();\n\n\tconst {\n\t\tnavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tisNavigationMenuResolved,\n\t\tcanUserCreateNavigationMenu,\n\t\tcanSwitchNavigationMenu,\n\t} = useNavigationMenu();\n\n\tconst [ currentTitle ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_navigation',\n\t\t'title'\n\t);\n\n\tconst shouldEnableMenuSelector =\n\t\t( canSwitchNavigationMenu || canUserCreateNavigationMenu ) &&\n\t\thasResolvedNavigationMenus &&\n\t\t! isCreatingMenu;\n\n\tconst menuChoices = useMemo( () => {\n\t\treturn (\n\t\t\tnavigationMenus?.map( ( { id, title } ) => {\n\t\t\t\tconst label = decodeEntities( title.rendered );\n\t\t\t\tif ( id === currentMenuId && ! isCreatingMenu ) {\n\t\t\t\t\tsetSelectorLabel( currentTitle );\n\t\t\t\t\tsetEnableOptions( shouldEnableMenuSelector );\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tvalue: id,\n\t\t\t\t\tlabel,\n\t\t\t\t\tariaLabel: sprintf( actionLabel, label ),\n\t\t\t\t};\n\t\t\t} ) || []\n\t\t);\n\t}, [\n\t\tcurrentTitle,\n\t\tcurrentMenuId,\n\t\tnavigationMenus,\n\t\tcreateNavigationMenuIsSuccess,\n\t\tisNavigationMenuResolved,\n\t\thasResolvedNavigationMenus,\n\t] );\n\n\tconst hasNavigationMenus = !! navigationMenus?.length;\n\tconst hasClassicMenus = !! classicMenus?.length;\n\tconst showNavigationMenus = !! canSwitchNavigationMenu;\n\tconst showClassicMenus = !! canUserCreateNavigationMenu;\n\n\tconst noMenuSelected = hasNavigationMenus && ! currentMenuId;\n\tconst noBlockMenus = ! hasNavigationMenus && hasResolvedNavigationMenus;\n\tconst menuUnavailable =\n\t\thasResolvedNavigationMenus && currentMenuId === null;\n\n\tuseEffect( () => {\n\t\tif ( ! hasResolvedNavigationMenus ) {\n\t\t\tsetSelectorLabel( __( 'Loading …' ) );\n\t\t} else if ( noMenuSelected || noBlockMenus || menuUnavailable ) {\n\t\t\tsetSelectorLabel( __( 'Select menu' ) );\n\t\t\tsetEnableOptions( shouldEnableMenuSelector );\n\t\t}\n\n\t\tif (\n\t\t\tisCreatingMenu &&\n\t\t\t( createNavigationMenuIsSuccess || createNavigationMenuIsError )\n\t\t) {\n\t\t\tsetIsCreatingMenu( false );\n\t\t}\n\t}, [\n\t\tcurrentMenuId,\n\t\thasNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tcreateNavigationMenuIsSuccess,\n\t\tisNavigationMenuResolved,\n\t] );\n\n\ttoggleProps = {\n\t\t...toggleProps,\n\t\tclassName: 'wp-block-navigation__navigation-selector-button',\n\t\tchildren: (\n\t\t\t<>\n\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t{ __( 'Select Menu' ) }\n\t\t\t\t</VisuallyHidden>\n\t\t\t\t<Icon\n\t\t\t\t\ticon={ isPressed ? chevronUp : chevronDown }\n\t\t\t\t\tclassName=\"wp-block-navigation__navigation-selector-button__icon\"\n\t\t\t\t/>\n\t\t\t</>\n\t\t),\n\t\tisBusy: ! enableOptions,\n\t\tdisabled: ! enableOptions,\n\t\t__experimentalIsFocusable: true,\n\t\tonClick: () => {\n\t\t\tsetIsPressed( ! isPressed );\n\t\t},\n\t};\n\n\tif ( ! hasNavigationMenus && ! hasClassicMenus ) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tclassName=\"wp-block-navigation__navigation-selector-button--createnew\"\n\t\t\t\tisBusy={ ! enableOptions }\n\t\t\t\tdisabled={ ! enableOptions }\n\t\t\t\t__experimentalIsFocusable\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tonCreateNew();\n\t\t\t\t\tsetIsCreatingMenu( true );\n\t\t\t\t\tsetSelectorLabel( __( 'Loading …' ) );\n\t\t\t\t\tsetEnableOptions( false );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ __( 'Create new menu' ) }\n\t\t\t</Button>\n\t\t);\n\t}\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName=\"wp-block-navigation__navigation-selector\"\n\t\t\tlabel={ selectorLabel }\n\t\t\ttext={ selectorLabel }\n\t\t\ticon={ null }\n\t\t\ttoggleProps={ toggleProps }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ showNavigationMenus && hasNavigationMenus && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Menus' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tvalue={ currentMenuId }\n\t\t\t\t\t\t\t\tonSelect={ ( menuId ) => {\n\t\t\t\t\t\t\t\t\tonSelectNavigationMenu( menuId );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tchoices={ menuChoices }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showClassicMenus && hasClassicMenus && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Import Classic Menus' ) }>\n\t\t\t\t\t\t\t{ classicMenus?.map( ( menu ) => {\n\t\t\t\t\t\t\t\tconst label = decodeEntities( menu.name );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetSelectorLabel(\n\t\t\t\t\t\t\t\t\t\t\t\t__( 'Loading …' )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tsetEnableOptions( false );\n\t\t\t\t\t\t\t\t\t\t\tonSelectClassicMenu( menu );\n\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t\t\t\tcreateActionLabel,\n\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ canUserCreateNavigationMenu && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Tools' ) }>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\tonCreateNew();\n\t\t\t\t\t\t\t\t\tsetIsCreatingMenu( true );\n\t\t\t\t\t\t\t\t\tsetSelectorLabel( __( 'Loading …' ) );\n\t\t\t\t\t\t\t\t\tsetEnableOptions( false );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Create new menu' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nexport default NavigationMenuSelector;\n","/**\n * WordPress dependencies\n */\nimport { Placeholder, Button, Spinner } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { navigation, Icon } from '@wordpress/icons';\nimport { speak } from '@wordpress/a11y';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useNavigationEntities from '../../use-navigation-entities';\nimport PlaceholderPreview from './placeholder-preview';\nimport NavigationMenuSelector from '../navigation-menu-selector';\n\nexport default function NavigationPlaceholder( {\n\tisSelected,\n\tcurrentMenuId,\n\tclientId,\n\tcanUserCreateNavigationMenu = false,\n\tisResolvingCanUserCreateNavigationMenu,\n\tonSelectNavigationMenu,\n\tonSelectClassicMenu,\n\tonCreateEmpty,\n} ) {\n\tconst { isResolvingMenus, hasResolvedMenus } = useNavigationEntities();\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isResolvingMenus ) {\n\t\t\tspeak( __( 'Loading Navigation block setup options.' ) );\n\t\t}\n\n\t\tif ( hasResolvedMenus ) {\n\t\t\tspeak( __( 'Navigation block setup options ready.' ) );\n\t\t}\n\t}, [ isResolvingMenus, isSelected ] );\n\n\tconst isResolvingActions =\n\t\tisResolvingMenus && isResolvingCanUserCreateNavigationMenu;\n\n\treturn (\n\t\t<>\n\t\t\t<Placeholder className=\"wp-block-navigation-placeholder\">\n\t\t\t\t{\n\t\t\t\t\t// The <PlaceholderPreview> component is displayed conditionally via CSS depending on\n\t\t\t\t\t// whether the block is selected or not. This is achieved via CSS to avoid\n\t\t\t\t\t// component re-renders\n\t\t\t\t }\n\t\t\t\t<PlaceholderPreview isVisible={ ! isSelected } />\n\t\t\t\t<div\n\t\t\t\t\taria-hidden={ ! isSelected ? true : undefined }\n\t\t\t\t\tclassName=\"wp-block-navigation-placeholder__controls\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__actions\">\n\t\t\t\t\t\t<div className=\"wp-block-navigation-placeholder__actions__indicator\">\n\t\t\t\t\t\t\t<Icon icon={ navigation } /> { __( 'Navigation' ) }\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<hr />\n\n\t\t\t\t\t\t{ isResolvingActions && <Spinner /> }\n\n\t\t\t\t\t\t<NavigationMenuSelector\n\t\t\t\t\t\t\tcurrentMenuId={ currentMenuId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tonSelectNavigationMenu={ onSelectNavigationMenu }\n\t\t\t\t\t\t\tonSelectClassicMenu={ onSelectClassicMenu }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tvariant: 'tertiary',\n\t\t\t\t\t\t\t\ticonPosition: 'right',\n\t\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t\t'wp-block-navigation-placeholder__actions__dropdown',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<hr />\n\n\t\t\t\t\t\t{ canUserCreateNavigationMenu && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\tonClick={ onCreateEmpty }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Start empty' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Placeholder>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst menu = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M5 5v1.5h14V5H5zm0 7.8h14v-1.5H5v1.5zM5 19h14v-1.5H5V19z\" />\n\t</SVG>\n);\n\nexport default menu;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Rect } from '@wordpress/primitives';\nimport { Icon, menu } from '@wordpress/icons';\n\nexport default function OverlayMenuIcon( { icon } ) {\n\tif ( icon === 'menu' ) {\n\t\treturn <Icon icon={ menu } />;\n\t}\n\n\treturn (\n\t\t<SVG\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\twidth=\"24\"\n\t\t\theight=\"24\"\n\t\t\taria-hidden=\"true\"\n\t\t\tfocusable=\"false\"\n\t\t>\n\t\t\t<Rect x=\"4\" y=\"7.5\" width=\"16\" height=\"1.5\" />\n\t\t\t<Rect x=\"4\" y=\"15\" width=\"16\" height=\"1.5\" />\n\t\t</SVG>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { close, Icon } from '@wordpress/icons';\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { getColorClassName } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport OverlayMenuIcon from './overlay-menu-icon';\n\nexport default function ResponsiveWrapper( {\n\tchildren,\n\tid,\n\tisOpen,\n\tisResponsive,\n\tonToggle,\n\tisHiddenByDefault,\n\toverlayBackgroundColor,\n\toverlayTextColor,\n\thasIcon,\n\ticon,\n} ) {\n\tif ( ! isResponsive ) {\n\t\treturn children;\n\t}\n\n\tconst responsiveContainerClasses = classnames(\n\t\t'wp-block-navigation__responsive-container',\n\t\t{\n\t\t\t'has-text-color':\n\t\t\t\t!! overlayTextColor.color || !! overlayTextColor?.class,\n\t\t\t[ getColorClassName( 'color', overlayTextColor?.slug ) ]:\n\t\t\t\t!! overlayTextColor?.slug,\n\t\t\t'has-background':\n\t\t\t\t!! overlayBackgroundColor.color ||\n\t\t\t\toverlayBackgroundColor?.class,\n\t\t\t[ getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\toverlayBackgroundColor?.slug\n\t\t\t) ]: !! overlayBackgroundColor?.slug,\n\t\t\t'is-menu-open': isOpen,\n\t\t\t'hidden-by-default': isHiddenByDefault,\n\t\t}\n\t);\n\n\tconst styles = {\n\t\tcolor: ! overlayTextColor?.slug && overlayTextColor?.color,\n\t\tbackgroundColor:\n\t\t\t! overlayBackgroundColor?.slug &&\n\t\t\toverlayBackgroundColor?.color &&\n\t\t\toverlayBackgroundColor.color,\n\t};\n\n\tconst openButtonClasses = classnames(\n\t\t'wp-block-navigation__responsive-container-open',\n\t\t{ 'always-shown': isHiddenByDefault }\n\t);\n\n\tconst modalId = `${ id }-modal`;\n\n\tconst dialogProps = {\n\t\tclassName: 'wp-block-navigation__responsive-dialog',\n\t\t...( isOpen && {\n\t\t\trole: 'dialog',\n\t\t\t'aria-modal': true,\n\t\t\t'aria-label': __( 'Menu' ),\n\t\t} ),\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isOpen && (\n\t\t\t\t<Button\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\taria-label={ hasIcon && __( 'Open menu' ) }\n\t\t\t\t\tclassName={ openButtonClasses }\n\t\t\t\t\tonClick={ () => onToggle( true ) }\n\t\t\t\t>\n\t\t\t\t\t{ hasIcon && <OverlayMenuIcon icon={ icon } /> }\n\t\t\t\t\t{ ! hasIcon && (\n\t\t\t\t\t\t<span className=\"wp-block-navigation__toggle_button_label\">\n\t\t\t\t\t\t\t{ __( 'Menu' ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t) }\n\n\t\t\t<div\n\t\t\t\tclassName={ responsiveContainerClasses }\n\t\t\t\tstyle={ styles }\n\t\t\t\tid={ modalId }\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"wp-block-navigation__responsive-close\"\n\t\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t>\n\t\t\t\t\t<div { ...dialogProps }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation__responsive-container-close\"\n\t\t\t\t\t\t\taria-label={ hasIcon && __( 'Close menu' ) }\n\t\t\t\t\t\t\tonClick={ () => onToggle( false ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ hasIcon && <Icon icon={ close } /> }\n\t\t\t\t\t\t\t{ ! hasIcon && (\n\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation__toggle_button_label\">\n\t\t\t\t\t\t\t\t\t{ __( 'Close' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation__responsive-container-content\"\n\t\t\t\t\t\t\tid={ `${ modalId }-content` }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useEntityBlockEditor } from '@wordpress/core-data';\nimport {\n\tuseInnerBlocksProps,\n\tInnerBlocks,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport PlaceholderPreview from './placeholder/placeholder-preview';\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/search',\n\t'core/social-links',\n\t'core/page-list',\n\t'core/spacer',\n\t'core/home-link',\n\t'core/site-title',\n\t'core/site-logo',\n\t'core/navigation-submenu',\n];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\nconst LAYOUT = {\n\ttype: 'default',\n\talignments: [],\n};\n\nexport default function NavigationInnerBlocks( {\n\tclientId,\n\thasCustomPlaceholder,\n\torientation,\n} ) {\n\tconst {\n\t\tisImmediateParentOfSelectedBlock,\n\t\tselectedBlockHasChildren,\n\t\tisSelected,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\treturn {\n\t\t\t\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\tselectedBlockHasChildren: !! getBlockCount( selectedBlockId ),\n\n\t\t\t\t// This prop is already available but computing it here ensures it's\n\t\t\t\t// fresh compared to isImmediateParentOfSelectedBlock.\n\t\t\t\tisSelected: selectedBlockId === clientId,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_navigation'\n\t);\n\n\tconst shouldDirectInsert = useMemo(\n\t\t() =>\n\t\t\tblocks.every(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\tname === 'core/navigation-link' ||\n\t\t\t\t\tname === 'core/navigation-submenu' ||\n\t\t\t\t\tname === 'core/page-list'\n\t\t\t),\n\t\t[ blocks ]\n\t);\n\n\t// When the block is selected itself or has a top level item selected that\n\t// doesn't itself have children, show the standard appender. Else show no\n\t// appender.\n\tconst parentOrChildHasSelection =\n\t\tisSelected ||\n\t\t( isImmediateParentOfSelectedBlock && ! selectedBlockHasChildren );\n\n\tconst placeholder = useMemo( () => <PlaceholderPreview />, [] );\n\n\tconst hasMenuItems = !! blocks?.length;\n\n\t// If there is a `ref` attribute pointing to a `wp_navigation` but\n\t// that menu has no **items** (i.e. empty) then show a placeholder.\n\t// The block must also be selected else the placeholder will display\n\t// alongside the appender.\n\tconst showPlaceholder =\n\t\t! hasCustomPlaceholder && ! hasMenuItems && ! isSelected;\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-navigation__container',\n\t\t},\n\t\t{\n\t\t\tvalue: blocks,\n\t\t\tonInput,\n\t\t\tonChange,\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: shouldDirectInsert,\n\t\t\torientation,\n\n\t\t\t// As an exception to other blocks which feature nesting, show\n\t\t\t// the block appender even when a child block is selected.\n\t\t\t// This should be a temporary fix, to be replaced by improvements to\n\t\t\t// the sibling inserter.\n\t\t\t// See https://github.com/WordPress/gutenberg/issues/37572.\n\t\t\trenderAppender:\n\t\t\t\tisSelected ||\n\t\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\t\tparentOrChildHasSelection\n\t\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t\t: false,\n\n\t\t\t// Template lock set to false here so that the Nav\n\t\t\t// Block on the experimental menus screen does not\n\t\t\t// inherit templateLock={ 'all' }.\n\t\t\ttemplateLock: false,\n\t\t\t__experimentalLayout: LAYOUT,\n\t\t\tplaceholder: showPlaceholder ? placeholder : undefined,\n\t\t}\n\t);\n\n\treturn <div { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { TextControl } from '@wordpress/components';\nimport { useEntityProp } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\n\nexport default function NavigationMenuNameControl() {\n\tconst [ title, updateTitle ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_navigation',\n\t\t'title'\n\t);\n\n\treturn (\n\t\t<TextControl\n\t\t\tlabel={ __( 'Menu name' ) }\n\t\t\tvalue={ title }\n\t\t\tonChange={ updateTitle }\n\t\t/>\n\t);\n}\n","/**\n * Generates a template part Id based on slug and theme inputs.\n *\n * @param {string} theme the template part's theme.\n * @param {string} slug  the template part's slug\n * @return {string|null} the template part's Id.\n */\nexport function createTemplatePartId( theme, slug ) {\n\treturn theme && slug ? theme + '//' + slug : null;\n}\n","/**\n * WordPress dependencies\n */\nimport { Disabled } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useRegistry } from '@wordpress/data';\nimport { useContext, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useTemplatePartAreaLabel from '../use-template-part-area-label';\n\nconst DRAFT_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ status: 'draft', per_page: -1 },\n];\n\nconst PUBLISHED_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ per_page: -1, status: 'publish' },\n];\n\nexport default function useGenerateDefaultNavigationTitle( clientId ) {\n\t// The block will be disabled in a block preview, use this as a way of\n\t// avoiding the side-effects of this component for block previews.\n\tconst isDisabled = useContext( Disabled.Context );\n\n\t// Because we can't conditionally call hooks, pass an undefined client id\n\t// arg to bypass the expensive `useTemplateArea` code. The hook will return\n\t// early.\n\tconst area = useTemplatePartAreaLabel( isDisabled ? undefined : clientId );\n\n\tconst registry = useRegistry();\n\treturn useCallback( async () => {\n\t\t// Ensure other navigation menus have loaded so an\n\t\t// accurate name can be created.\n\t\tif ( isDisabled ) {\n\t\t\treturn '';\n\t\t}\n\t\tconst { getEntityRecords } = registry.resolveSelect( coreStore );\n\n\t\tconst [ draftNavigationMenus, navigationMenus ] = await Promise.all( [\n\t\t\tgetEntityRecords( ...DRAFT_MENU_PARAMS ),\n\t\t\tgetEntityRecords( ...PUBLISHED_MENU_PARAMS ),\n\t\t] );\n\n\t\tconst title = area\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( '%s navigation' ),\n\t\t\t\t\tarea\n\t\t\t  )\n\t\t\t: // translators: 'navigation' as in website navigation.\n\t\t\t  __( 'Navigation' );\n\n\t\t// Determine how many menus start with the automatic title.\n\t\tconst matchingMenuTitleCount = [\n\t\t\t...draftNavigationMenus,\n\t\t\t...navigationMenus,\n\t\t].reduce(\n\t\t\t( count, menu ) =>\n\t\t\t\tmenu?.title?.raw?.startsWith( title ) ? count + 1 : count,\n\t\t\t0\n\t\t);\n\n\t\t// Append a number to the end of the title if a menu with\n\t\t// the same name exists.\n\t\tconst titleWithCount =\n\t\t\tmatchingMenuTitleCount > 0\n\t\t\t\t? `${ title } ${ matchingMenuTitleCount + 1 }`\n\t\t\t\t: title;\n\n\t\treturn titleWithCount || '';\n\t}, [ isDisabled, area ] );\n}\n","/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\n\n// TODO: this util should perhaps be refactored somewhere like core-data.\nimport { createTemplatePartId } from '../template-part/edit/utils/create-template-part-id';\n\nexport default function useTemplatePartAreaLabel( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\t// Use the lack of a clientId as an opportunity to bypass the rest\n\t\t\t// of this hook.\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { getBlock, getBlockParentsByBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst withAscendingResults = true;\n\t\t\tconst parentTemplatePartClientIds = getBlockParentsByBlockName(\n\t\t\t\tclientId,\n\t\t\t\t'core/template-part',\n\t\t\t\twithAscendingResults\n\t\t\t);\n\n\t\t\tif ( ! parentTemplatePartClientIds?.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// FIXME: @wordpress/block-library should not depend on @wordpress/editor.\n\t\t\t// Blocks can be loaded into a *non-post* block editor.\n\t\t\t// This code is lifted from this file:\n\t\t\t// packages/block-library/src/template-part/edit/advanced-controls.js\n\t\t\t/* eslint-disable @wordpress/data-no-store-string-literals */\n\t\t\tconst definedAreas =\n\t\t\t\tselect(\n\t\t\t\t\t'core/editor'\n\t\t\t\t).__experimentalGetDefaultTemplatePartAreas();\n\t\t\t/* eslint-enable @wordpress/data-no-store-string-literals */\n\t\t\tconst { getEditedEntityRecord } = select( coreStore );\n\n\t\t\tfor ( const templatePartClientId of parentTemplatePartClientIds ) {\n\t\t\t\tconst templatePartBlock = getBlock( templatePartClientId );\n\n\t\t\t\t// The 'area' usually isn't stored on the block, but instead\n\t\t\t\t// on the entity.\n\t\t\t\tconst { theme, slug } = templatePartBlock.attributes;\n\t\t\t\tconst templatePartEntityId = createTemplatePartId(\n\t\t\t\t\ttheme,\n\t\t\t\t\tslug\n\t\t\t\t);\n\t\t\t\tconst templatePartEntity = getEditedEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_template_part',\n\t\t\t\t\ttemplatePartEntityId\n\t\t\t\t);\n\n\t\t\t\t// Look up the `label` for the area in the defined areas so\n\t\t\t\t// that an internationalized label can be used.\n\t\t\t\tif ( templatePartEntity?.area ) {\n\t\t\t\t\treturn definedAreas.find(\n\t\t\t\t\t\t( definedArea ) =>\n\t\t\t\t\t\t\tdefinedArea.area !== 'uncategorized' &&\n\t\t\t\t\t\t\tdefinedArea.area === templatePartEntity.area\n\t\t\t\t\t)?.label;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { serialize } from '@wordpress/blocks';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useGenerateDefaultNavigationTitle from './use-generate-default-navigation-title';\n\nexport const CREATE_NAVIGATION_MENU_SUCCESS = 'success';\nexport const CREATE_NAVIGATION_MENU_ERROR = 'error';\nexport const CREATE_NAVIGATION_MENU_PENDING = 'pending';\nexport const CREATE_NAVIGATION_MENU_IDLE = 'idle';\n\nexport default function useCreateNavigationMenu(\n\tclientId,\n\tpostStatus = 'publish'\n) {\n\tconst [ status, setStatus ] = useState( CREATE_NAVIGATION_MENU_IDLE );\n\tconst [ value, setValue ] = useState( null );\n\tconst [ error, setError ] = useState( null );\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst generateDefaultTitle = useGenerateDefaultNavigationTitle( clientId );\n\n\t// This callback uses data from the two placeholder steps and only creates\n\t// a new navigation menu when the user completes the final step.\n\tconst create = useCallback(\n\t\tasync ( title = null, blocks = [] ) => {\n\t\t\t// Guard against creating Navigations without a title.\n\t\t\t// Note you can pass no title, but if one is passed it must be\n\t\t\t// a string otherwise the title may end up being empty.\n\t\t\tif ( title && typeof title !== 'string' ) {\n\t\t\t\tsetError(\n\t\t\t\t\t'Invalid title supplied when creating Navigation Menu.'\n\t\t\t\t);\n\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_ERROR );\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Value of supplied title argument was not a string.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetStatus( CREATE_NAVIGATION_MENU_PENDING );\n\t\t\tsetValue( null );\n\t\t\tsetError( null );\n\n\t\t\tif ( ! title ) {\n\t\t\t\ttitle = await generateDefaultTitle().catch( ( err ) => {\n\t\t\t\t\tsetError( err?.message );\n\t\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_ERROR );\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Failed to create title when saving new Navigation Menu.',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcause: err,\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\tconst record = {\n\t\t\t\ttitle,\n\t\t\t\tcontent: serialize( blocks ),\n\t\t\t\tstatus: postStatus,\n\t\t\t};\n\n\t\t\t// Return affords ability to await on this function directly\n\t\t\treturn saveEntityRecord( 'postType', 'wp_navigation', record )\n\t\t\t\t.then( ( response ) => {\n\t\t\t\t\tsetValue( response );\n\t\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_SUCCESS );\n\t\t\t\t\treturn response;\n\t\t\t\t} )\n\t\t\t\t.catch( ( err ) => {\n\t\t\t\t\tsetError( err?.message );\n\t\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_ERROR );\n\t\t\t\t\tthrow new Error( 'Unable to save new Navigation Menu', {\n\t\t\t\t\t\tcause: err,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t},\n\t\t[ serialize, saveEntityRecord ]\n\t);\n\n\treturn {\n\t\tcreate,\n\t\tstatus,\n\t\tvalue,\n\t\terror,\n\t\tisIdle: status === CREATE_NAVIGATION_MENU_IDLE,\n\t\tisPending: status === CREATE_NAVIGATION_MENU_PENDING,\n\t\tisSuccess: status === CREATE_NAVIGATION_MENU_SUCCESS,\n\t\tisError: status === CREATE_NAVIGATION_MENU_ERROR,\n\t};\n}\n","/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps } from '@wordpress/block-editor';\nimport { Disabled, Spinner } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useEffect, useRef, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\nimport useCreateNavigationMenu from './use-create-navigation-menu';\n\nconst EMPTY_OBJECT = {};\nconst DRAFT_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ status: 'draft', per_page: -1 },\n];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/search',\n\t'core/social-links',\n\t'core/page-list',\n\t'core/spacer',\n\t'core/home-link',\n\t'core/site-title',\n\t'core/site-logo',\n\t'core/navigation-submenu',\n];\n\nexport default function UnsavedInnerBlocks( {\n\tblocks,\n\tclientId,\n\thasSavedUnsavedInnerBlocks,\n\tonSave,\n\thasSelection,\n} ) {\n\tconst originalBlocks = useRef();\n\n\tuseEffect( () => {\n\t\t// Initially store the uncontrolled inner blocks for\n\t\t// dirty state comparison.\n\t\tif ( ! originalBlocks?.current ) {\n\t\t\toriginalBlocks.current = blocks;\n\t\t}\n\t}, [ blocks ] );\n\n\t// If the current inner blocks object is different in any way\n\t// from the original inner blocks from the post content then the\n\t// user has made changes to the inner blocks. At this point the inner\n\t// blocks can be considered \"dirty\".\n\t// We also make sure the current innerBlocks had a chance to be set.\n\tconst innerBlocksAreDirty =\n\t\t!! originalBlocks.current && blocks !== originalBlocks.current;\n\n\tconst shouldDirectInsert = useMemo(\n\t\t() =>\n\t\t\tblocks.every(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\tname === 'core/navigation-link' ||\n\t\t\t\t\tname === 'core/navigation-submenu' ||\n\t\t\t\t\tname === 'core/page-list'\n\t\t\t),\n\t\t[ blocks ]\n\t);\n\n\t// The block will be disabled in a block preview, use this as a way of\n\t// avoiding the side-effects of this component for block previews.\n\tconst isDisabled = useContext( Disabled.Context );\n\tconst savingLock = useRef( false );\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-navigation__container',\n\t\t},\n\t\t{\n\t\t\trenderAppender: hasSelection ? undefined : false,\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: shouldDirectInsert,\n\t\t}\n\t);\n\n\tconst { isSaving, draftNavigationMenus, hasResolvedDraftNavigationMenus } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tif ( isDisabled ) {\n\t\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t\t}\n\n\t\t\t\tconst {\n\t\t\t\t\tgetEntityRecords,\n\t\t\t\t\thasFinishedResolution,\n\t\t\t\t\tisSavingEntityRecord,\n\t\t\t\t} = select( coreStore );\n\n\t\t\t\treturn {\n\t\t\t\t\tisSaving: isSavingEntityRecord(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t'wp_navigation'\n\t\t\t\t\t),\n\t\t\t\t\tdraftNavigationMenus: getEntityRecords(\n\t\t\t\t\t\t...DRAFT_MENU_PARAMS\n\t\t\t\t\t),\n\t\t\t\t\thasResolvedDraftNavigationMenus: hasFinishedResolution(\n\t\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\t\tDRAFT_MENU_PARAMS\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ isDisabled ]\n\t\t);\n\n\tconst { hasResolvedNavigationMenus, navigationMenus } = useNavigationMenu();\n\n\tconst { create: createNavigationMenu } =\n\t\tuseCreateNavigationMenu( clientId );\n\n\t// Automatically save the uncontrolled blocks.\n\tuseEffect( () => {\n\t\t// The block will be disabled when used in a BlockPreview.\n\t\t// In this case avoid automatic creation of a wp_navigation post.\n\t\t// Otherwise the user will be spammed with lots of menus!\n\t\t//\n\t\t// Also ensure other navigation menus have loaded so an\n\t\t// accurate name can be created.\n\t\t//\n\t\t// Don't try saving when another save is already\n\t\t// in progress.\n\t\t//\n\t\t// And finally only create the menu when the block is selected,\n\t\t// which is an indication they want to start editing.\n\t\tif (\n\t\t\tisDisabled ||\n\t\t\thasSavedUnsavedInnerBlocks ||\n\t\t\tisSaving ||\n\t\t\tsavingLock.current ||\n\t\t\t! hasResolvedDraftNavigationMenus ||\n\t\t\t! hasResolvedNavigationMenus ||\n\t\t\t! hasSelection ||\n\t\t\t! innerBlocksAreDirty\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsavingLock.current = true;\n\t\tcreateNavigationMenu( null, blocks ).then( ( menu ) => {\n\t\t\tonSave( menu );\n\t\t\tsavingLock.current = false;\n\t\t} );\n\t}, [\n\t\tisDisabled,\n\t\tisSaving,\n\t\thasResolvedDraftNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tdraftNavigationMenus,\n\t\tnavigationMenus,\n\t\thasSelection,\n\t\tcreateNavigationMenu,\n\t\tblocks,\n\t] );\n\n\tconst Wrapper = isSaving ? Disabled : 'div';\n\n\treturn (\n\t\t<>\n\t\t\t<Wrapper { ...innerBlocksProps } />\n\t\t\t{ isSaving && <Spinner /> }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Button, Flex, FlexItem, Modal } from '@wordpress/components';\nimport {\n\tstore as coreStore,\n\tuseEntityId,\n\tuseEntityProp,\n} from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\nexport default function NavigationMenuDeleteControl( { onDelete } ) {\n\tconst [ isConfirmModalVisible, setIsConfirmModalVisible ] =\n\t\tuseState( false );\n\tconst id = useEntityId( 'postType', 'wp_navigation' );\n\tconst [ title ] = useEntityProp( 'postType', 'wp_navigation', 'title' );\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tclassName=\"wp-block-navigation-delete-menu-button\"\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tisDestructive\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetIsConfirmModalVisible( true );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ __( 'Delete menu' ) }\n\t\t\t</Button>\n\t\t\t{ isConfirmModalVisible && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t/* translators: %s: the name of a menu to delete */\n\t\t\t\t\t\t__( 'Delete %s' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t\t) }\n\t\t\t\t\tcloseLabel={ __( 'Cancel' ) }\n\t\t\t\t\tonRequestClose={ () => setIsConfirmModalVisible( false ) }\n\t\t\t\t>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Are you sure you want to delete this navigation menu?'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t\t<Flex justify=\"flex-end\">\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetIsConfirmModalVisible( false );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tdeleteEntityRecord(\n\t\t\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t\t\t'wp_navigation',\n\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t{ force: true }\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tonDelete( title );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Confirm' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { store as noticeStore } from '@wordpress/notices';\n\nfunction useNavigationNotice( { name, message = '' } = {} ) {\n\tconst noticeRef = useRef();\n\n\tconst { createWarningNotice, removeNotice } = useDispatch( noticeStore );\n\n\tconst showNotice = ( customMsg ) => {\n\t\tif ( noticeRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnoticeRef.current = name;\n\n\t\tcreateWarningNotice( customMsg || message, {\n\t\t\tid: noticeRef.current,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t};\n\n\tconst hideNotice = () => {\n\t\tif ( ! noticeRef.current ) {\n\t\t\treturn;\n\t\t}\n\t\tremoveNotice( noticeRef.current );\n\t\tnoticeRef.current = null;\n\t};\n\n\treturn [ showNotice, hideNotice ];\n}\n\nexport default useNavigationNotice;\n","/**\n * WordPress dependencies\n */\nimport {\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport OverlayMenuIcon from './overlay-menu-icon';\n\nexport default function OverlayMenuPreview( { setAttributes, hasIcon, icon } ) {\n\treturn (\n\t\t<>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Show icon button' ) }\n\t\t\t\thelp={ __(\n\t\t\t\t\t'Configure the visual appearance of the button opening the overlay menu.'\n\t\t\t\t) }\n\t\t\t\tonChange={ ( value ) => setAttributes( { hasIcon: value } ) }\n\t\t\t\tchecked={ hasIcon }\n\t\t\t/>\n\n\t\t\t<ToggleGroupControl\n\t\t\t\tlabel={ __( 'Icon' ) }\n\t\t\t\tvalue={ icon }\n\t\t\t\tonChange={ ( value ) => setAttributes( { icon: value } ) }\n\t\t\t\tisBlock\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tvalue=\"handle\"\n\t\t\t\t\taria-label={ __( 'handle' ) }\n\t\t\t\t\tlabel={ <OverlayMenuIcon icon=\"handle\" /> }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tvalue=\"menu\"\n\t\t\t\t\taria-label={ __( 'menu' ) }\n\t\t\t\t\tlabel={ <OverlayMenuIcon icon=\"menu\" /> }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock, parse } from '@wordpress/blocks';\nimport { applyFilters } from '@wordpress/hooks';\n\n/**\n * Convert a flat menu item structure to a nested blocks structure.\n *\n * @param {Object[]} menuItems An array of menu items.\n *\n * @return {WPBlock[]} An array of blocks.\n */\nexport default function menuItemsToBlocks( menuItems ) {\n\tif ( ! menuItems ) {\n\t\treturn null;\n\t}\n\n\tconst menuTree = createDataTree( menuItems );\n\tconst blocks = mapMenuItemsToBlocks( menuTree );\n\treturn applyFilters(\n\t\t'blocks.navigation.__unstableMenuItemsToBlocks',\n\t\tblocks,\n\t\tmenuItems\n\t);\n}\n\n/**\n * A recursive function that maps menu item nodes to blocks.\n *\n * @param {WPNavMenuItem[]} menuItems An array of WPNavMenuItem items.\n * @param {number}          level     An integer representing the nesting level.\n * @return {Object} Object containing innerBlocks and mapping.\n */\nfunction mapMenuItemsToBlocks( menuItems, level = 0 ) {\n\tlet mapping = {};\n\n\t// The menuItem should be in menu_order sort order.\n\tconst sortedItems = [ ...menuItems ].sort(\n\t\t( a, b ) => a.menu_order - b.menu_order\n\t);\n\n\tconst innerBlocks = sortedItems.map( ( menuItem ) => {\n\t\tif ( menuItem.type === 'block' ) {\n\t\t\tconst [ block ] = parse( menuItem.content.raw );\n\n\t\t\tif ( ! block ) {\n\t\t\t\treturn createBlock( 'core/freeform', {\n\t\t\t\t\tcontent: menuItem.content,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn block;\n\t\t}\n\n\t\tconst blockType = menuItem.children?.length\n\t\t\t? 'core/navigation-submenu'\n\t\t\t: 'core/navigation-link';\n\n\t\tconst attributes = menuItemToBlockAttributes(\n\t\t\tmenuItem,\n\t\t\tblockType,\n\t\t\tlevel\n\t\t);\n\n\t\t// If there are children recurse to build those nested blocks.\n\t\tconst {\n\t\t\tinnerBlocks: nestedBlocks = [], // alias to avoid shadowing\n\t\t\tmapping: nestedMapping = {}, // alias to avoid shadowing\n\t\t} = menuItem.children?.length\n\t\t\t? mapMenuItemsToBlocks( menuItem.children, level + 1 )\n\t\t\t: {};\n\n\t\t// Update parent mapping with nested mapping.\n\t\tmapping = {\n\t\t\t...mapping,\n\t\t\t...nestedMapping,\n\t\t};\n\n\t\t// Create block with nested \"innerBlocks\".\n\t\tconst block = createBlock( blockType, attributes, nestedBlocks );\n\n\t\t// Create mapping for menuItem -> block.\n\t\tmapping[ menuItem.id ] = block.clientId;\n\n\t\treturn block;\n\t} );\n\n\treturn {\n\t\tinnerBlocks,\n\t\tmapping,\n\t};\n}\n\n/**\n * A WP nav_menu_item object.\n * For more documentation on the individual fields present on a menu item please see:\n * https://core.trac.wordpress.org/browser/tags/5.7.1/src/wp-includes/nav-menu.php#L789\n *\n * Changes made here should also be mirrored in packages/edit-navigation/src/store/utils.js.\n *\n * @typedef WPNavMenuItem\n *\n * @property {Object} title       stores the raw and rendered versions of the title/label for this menu item.\n * @property {Array}  xfn         the XFN relationships expressed in the link of this menu item.\n * @property {Array}  classes     the HTML class attributes for this menu item.\n * @property {string} attr_title  the HTML title attribute for this menu item.\n * @property {string} object      The type of object originally represented, such as 'category', 'post', or 'attachment'.\n * @property {string} object_id   The DB ID of the original object this menu item represents, e.g. ID for posts and term_id for categories.\n * @property {string} description The description of this menu item.\n * @property {string} url         The URL to which this menu item points.\n * @property {string} type        The family of objects originally represented, such as 'post_type' or 'taxonomy'.\n * @property {string} target      The target attribute of the link element for this menu item.\n */\n\n/**\n * Convert block attributes to menu item.\n *\n * @param {WPNavMenuItem} menuItem  the menu item to be converted to block attributes.\n * @param {string}        blockType The block type.\n * @param {number}        level     An integer representing the nesting level.\n * @return {Object} the block attributes converted from the WPNavMenuItem item.\n */\nfunction menuItemToBlockAttributes(\n\t{\n\t\ttitle: menuItemTitleField,\n\t\txfn,\n\t\tclasses,\n\t\t// eslint-disable-next-line camelcase\n\t\tattr_title,\n\t\tobject,\n\t\t// eslint-disable-next-line camelcase\n\t\tobject_id,\n\t\tdescription,\n\t\turl,\n\t\ttype: menuItemTypeField,\n\t\ttarget,\n\t},\n\tblockType,\n\tlevel\n) {\n\t// For historical reasons, the `core/navigation-link` variation type is `tag`\n\t// whereas WP Core expects `post_tag` as the `object` type.\n\t// To avoid writing a block migration we perform a conversion here.\n\t// See also inverse equivalent in `blockAttributesToMenuItem`.\n\tif ( object && object === 'post_tag' ) {\n\t\tobject = 'tag';\n\t}\n\n\treturn {\n\t\tlabel: menuItemTitleField?.rendered || '',\n\t\t...( object?.length && {\n\t\t\ttype: object,\n\t\t} ),\n\t\tkind: menuItemTypeField?.replace( '_', '-' ) || 'custom',\n\t\turl: url || '',\n\t\t...( xfn?.length &&\n\t\t\txfn.join( ' ' ).trim() && {\n\t\t\t\trel: xfn.join( ' ' ).trim(),\n\t\t\t} ),\n\t\t...( classes?.length &&\n\t\t\tclasses.join( ' ' ).trim() && {\n\t\t\t\tclassName: classes.join( ' ' ).trim(),\n\t\t\t} ),\n\t\t/* eslint-disable camelcase */\n\t\t...( attr_title?.length && {\n\t\t\ttitle: attr_title,\n\t\t} ),\n\t\t...( object_id &&\n\t\t\t'custom' !== object && {\n\t\t\t\tid: object_id,\n\t\t\t} ),\n\t\t/* eslint-enable camelcase */\n\t\t...( description?.length && {\n\t\t\tdescription,\n\t\t} ),\n\t\t...( target === '_blank' && {\n\t\t\topensInNewTab: true,\n\t\t} ),\n\t\t...( blockType === 'core/navigation-submenu' && {\n\t\t\tisTopLevelItem: level === 0,\n\t\t} ),\n\t\t...( blockType === 'core/navigation-link' && {\n\t\t\tisTopLevelLink: level === 0,\n\t\t} ),\n\t};\n}\n\n/**\n * Creates a nested, hierarchical tree representation from unstructured data that\n * has an inherent relationship defined between individual items.\n *\n * For example, by default, each element in the dataset should have an `id` and\n * `parent` property where the `parent` property indicates a relationship between\n * the current item and another item with a matching `id` properties.\n *\n * This is useful for building linked lists of data from flat data structures.\n *\n * @param {Array}  dataset  linked data to be rearranged into a hierarchical tree based on relational fields.\n * @param {string} id       the property which uniquely identifies each entry within the array.\n * @param {*}      relation the property which identifies how the current item is related to other items in the data (if at all).\n * @return {Array} a nested array of parent/child relationships\n */\nfunction createDataTree( dataset, id = 'id', relation = 'parent' ) {\n\tconst hashTable = Object.create( null );\n\tconst dataTree = [];\n\n\tfor ( const data of dataset ) {\n\t\thashTable[ data[ id ] ] = {\n\t\t\t...data,\n\t\t\tchildren: [],\n\t\t};\n\t\tif ( data[ relation ] ) {\n\t\t\thashTable[ data[ relation ] ] = hashTable[ data[ relation ] ] || {};\n\t\t\thashTable[ data[ relation ] ].children =\n\t\t\t\thashTable[ data[ relation ] ].children || [];\n\t\t\thashTable[ data[ relation ] ].children.push(\n\t\t\t\thashTable[ data[ id ] ]\n\t\t\t);\n\t\t} else {\n\t\t\tdataTree.push( hashTable[ data[ id ] ] );\n\t\t}\n\t}\n\n\treturn dataTree;\n}\n","/**\n * WordPress dependencies\n */\nimport { useRegistry, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useCreateNavigationMenu from './use-create-navigation-menu';\nimport menuItemsToBlocks from '../menu-items-to-blocks';\n\nexport const CLASSIC_MENU_CONVERSION_SUCCESS = 'success';\nexport const CLASSIC_MENU_CONVERSION_ERROR = 'error';\nexport const CLASSIC_MENU_CONVERSION_PENDING = 'pending';\nexport const CLASSIC_MENU_CONVERSION_IDLE = 'idle';\n\nfunction useConvertClassicToBlockMenu( clientId ) {\n\t/*\n\t * The wp_navigation post is created as a draft so the changes on the frontend and\n\t * the site editor are not permanent without a save interaction done by the user.\n\t */\n\tconst { create: createNavigationMenu } = useCreateNavigationMenu(\n\t\tclientId,\n\t\t'draft'\n\t);\n\tconst registry = useRegistry();\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tconst [ status, setStatus ] = useState( CLASSIC_MENU_CONVERSION_IDLE );\n\tconst [ error, setError ] = useState( null );\n\n\tasync function convertClassicMenuToBlockMenu( menuId, menuName ) {\n\t\tlet navigationMenu;\n\t\tlet classicMenuItems;\n\n\t\t// 1. Fetch the classic Menu items.\n\t\ttry {\n\t\t\tclassicMenuItems = await registry\n\t\t\t\t.resolveSelect( coreStore )\n\t\t\t\t.getMenuItems( {\n\t\t\t\t\tmenus: menuId,\n\t\t\t\t\tper_page: -1,\n\t\t\t\t\tcontext: 'view',\n\t\t\t\t} );\n\t\t} catch ( err ) {\n\t\t\tthrow new Error(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( `Unable to fetch classic menu \"%s\" from API.` ),\n\t\t\t\t\tmenuName\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tcause: err,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\t// Handle offline response which resolves to `null`.\n\t\tif ( classicMenuItems === null ) {\n\t\t\tthrow new Error(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( `Unable to fetch classic menu \"%s\" from API.` ),\n\t\t\t\t\tmenuName\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t// 2. Convert the classic items into blocks.\n\t\tconst { innerBlocks } = menuItemsToBlocks( classicMenuItems );\n\n\t\t// 3. Create the `wp_navigation` Post with the blocks.\n\t\ttry {\n\t\t\tnavigationMenu = await createNavigationMenu(\n\t\t\t\tmenuName,\n\t\t\t\tinnerBlocks\n\t\t\t);\n\n\t\t\t/**\n\t\t\t * Immediately trigger editEntityRecord to change the wp_navigation post status to 'publish'.\n\t\t\t * This status change causes the menu to be displayed on the front of the site and sets the post state to be \"dirty\".\n\t\t\t * The problem being solved is if saveEditedEntityRecord was used here, the menu would be updated on the frontend and the editor _automatically_,\n\t\t\t * without user interaction.\n\t\t\t * If the user abandons the site editor without saving, there would still be a wp_navigation post created as draft.\n\t\t\t */\n\t\t\tawait editEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tnavigationMenu.id,\n\t\t\t\t{\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t} catch ( err ) {\n\t\t\tthrow new Error(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( `Unable to create Navigation Menu \"%s\".` ),\n\t\t\t\t\tmenuName\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tcause: err,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\treturn navigationMenu;\n\t}\n\n\tconst convert = useCallback( async ( menuId, menuName ) => {\n\t\tif ( ! menuId || ! menuName ) {\n\t\t\tsetError( 'Unable to convert menu. Missing menu details.' );\n\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_ERROR );\n\t\t\treturn;\n\t\t}\n\n\t\tsetStatus( CLASSIC_MENU_CONVERSION_PENDING );\n\t\tsetError( null );\n\n\t\treturn await convertClassicMenuToBlockMenu( menuId, menuName )\n\t\t\t.then( ( navigationMenu ) => {\n\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_SUCCESS );\n\t\t\t\treturn navigationMenu;\n\t\t\t} )\n\t\t\t.catch( ( err ) => {\n\t\t\t\tsetError( err?.message );\n\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_ERROR );\n\n\t\t\t\t// Rethrow error for debugging.\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t__( `Unable to create Navigation Menu \"%s\".` ),\n\t\t\t\t\t\tmenuName\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tcause: err,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} );\n\t}, [] );\n\n\treturn {\n\t\tconvert,\n\t\tstatus,\n\t\terror,\n\t};\n}\n\nexport default useConvertClassicToBlockMenu;\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\nconst EMPTY_ARRAY = [];\n\nexport function useInnerBlocks( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlocks, hasSelectedInnerBlock } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\t// This relies on the fact that `getBlock` won't return controlled\n\t\t\t// inner blocks, while `getBlocks` does. It might be more stable to\n\t\t\t// introduce a selector like `getUncontrolledInnerBlocks`, just in\n\t\t\t// case `getBlock` is fixed.\n\t\t\tconst _uncontrolledInnerBlocks = getBlock( clientId ).innerBlocks;\n\n\t\t\tconst _hasUncontrolledInnerBlocks =\n\t\t\t\t!! _uncontrolledInnerBlocks?.length;\n\t\t\tconst _controlledInnerBlocks = _hasUncontrolledInnerBlocks\n\t\t\t\t? EMPTY_ARRAY\n\t\t\t\t: getBlocks( clientId );\n\n\t\t\treturn {\n\t\t\t\tinnerBlocks: _hasUncontrolledInnerBlocks\n\t\t\t\t\t? _uncontrolledInnerBlocks\n\t\t\t\t\t: _controlledInnerBlocks,\n\t\t\t\thasUncontrolledInnerBlocks: _hasUncontrolledInnerBlocks,\n\t\t\t\tuncontrolledInnerBlocks: _uncontrolledInnerBlocks,\n\t\t\t\tcontrolledInnerBlocks: _controlledInnerBlocks,\n\t\t\t\tisInnerBlockSelected: hasSelectedInnerBlock( clientId, true ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n","function getComputedStyle( node ) {\n\treturn node.ownerDocument.defaultView.getComputedStyle( node );\n}\n\nexport function detectColors(\n\tcolorsDetectionElement,\n\tsetColor,\n\tsetBackground\n) {\n\tif ( ! colorsDetectionElement ) {\n\t\treturn;\n\t}\n\tsetColor( getComputedStyle( colorsDetectionElement ).color );\n\n\tlet backgroundColorNode = colorsDetectionElement;\n\tlet backgroundColor =\n\t\tgetComputedStyle( backgroundColorNode ).backgroundColor;\n\twhile (\n\t\tbackgroundColor === 'rgba(0, 0, 0, 0)' &&\n\t\tbackgroundColorNode.parentNode &&\n\t\tbackgroundColorNode.parentNode.nodeType ===\n\t\t\tbackgroundColorNode.parentNode.ELEMENT_NODE\n\t) {\n\t\tbackgroundColorNode = backgroundColorNode.parentNode;\n\t\tbackgroundColor =\n\t\t\tgetComputedStyle( backgroundColorNode ).backgroundColor;\n\t}\n\n\tsetBackground( backgroundColor );\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useRef, Platform } from '@wordpress/element';\nimport { addQueryArgs } from '@wordpress/url';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentalUseHasRecursion as useHasRecursion,\n\tstore as blockEditorStore,\n\twithColors,\n\tPanelColorSettings,\n\tContrastChecker,\n\tgetColorClassName,\n\tWarning,\n\t__experimentalUseBlockOverlayActive as useBlockOverlayActive,\n} from '@wordpress/block-editor';\nimport { EntityProvider, store as coreStore } from '@wordpress/core-data';\n\nimport { useDispatch } from '@wordpress/data';\nimport {\n\tPanelBody,\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\tButton,\n\tSpinner,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { createBlock } from '@wordpress/blocks';\nimport { close, Icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\nimport useNavigationEntities from '../use-navigation-entities';\nimport Placeholder from './placeholder';\nimport ResponsiveWrapper from './responsive-wrapper';\nimport NavigationInnerBlocks from './inner-blocks';\nimport NavigationMenuSelector from './navigation-menu-selector';\nimport NavigationMenuNameControl from './navigation-menu-name-control';\nimport UnsavedInnerBlocks from './unsaved-inner-blocks';\nimport NavigationMenuDeleteControl from './navigation-menu-delete-control';\nimport useNavigationNotice from './use-navigation-notice';\nimport OverlayMenuIcon from './overlay-menu-icon';\nimport OverlayMenuPreview from './overlay-menu-preview';\nimport useConvertClassicToBlockMenu, {\n\tCLASSIC_MENU_CONVERSION_ERROR,\n\tCLASSIC_MENU_CONVERSION_PENDING,\n\tCLASSIC_MENU_CONVERSION_SUCCESS,\n} from './use-convert-classic-menu-to-block-menu';\nimport useCreateNavigationMenu from './use-create-navigation-menu';\nimport { useInnerBlocks } from './use-inner-blocks';\nimport { detectColors } from './utils';\n\nfunction Navigation( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n\tisSelected,\n\tclassName,\n\tbackgroundColor,\n\tsetBackgroundColor,\n\ttextColor,\n\tsetTextColor,\n\toverlayBackgroundColor,\n\tsetOverlayBackgroundColor,\n\toverlayTextColor,\n\tsetOverlayTextColor,\n\n\t// These props are used by the navigation editor to override specific\n\t// navigation block settings.\n\thasSubmenuIndicatorSetting = true,\n\thasColorSettings = true,\n\tcustomPlaceholder: CustomPlaceholder = null,\n} ) {\n\tconst {\n\t\topenSubmenusOnClick,\n\t\toverlayMenu,\n\t\tshowSubmenuIcon,\n\t\tlayout: {\n\t\t\tjustifyContent,\n\t\t\torientation = 'horizontal',\n\t\t\tflexWrap = 'wrap',\n\t\t} = {},\n\t\thasIcon,\n\t\ticon = 'handle',\n\t} = attributes;\n\n\tconst ref = attributes.ref;\n\n\tconst setRef = ( postId ) => {\n\t\tsetAttributes( { ref: postId } );\n\t};\n\n\tconst recursionId = `navigationMenu/${ ref }`;\n\tconst hasAlreadyRendered = useHasRecursion( recursionId );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\t// Preload classic menus, so that they don't suddenly pop-in when viewing\n\t// the Select Menu dropdown.\n\tuseNavigationEntities();\n\n\tconst [ showNavigationMenuStatusNotice, hideNavigationMenuStatusNotice ] =\n\t\tuseNavigationNotice( {\n\t\t\tname: 'block-library/core/navigation/status',\n\t\t} );\n\n\tconst [ showClassicMenuConversionNotice, hideClassicMenuConversionNotice ] =\n\t\tuseNavigationNotice( {\n\t\t\tname: 'block-library/core/navigation/classic-menu-conversion',\n\t\t} );\n\n\tconst [ showMenuAutoPublishDraftNotice, hideMenuAutoPublishDraftNotice ] =\n\t\tuseNavigationNotice( {\n\t\t\tname: 'block-library/core/navigation/auto-publish-draft',\n\t\t} );\n\n\tconst [\n\t\tshowNavigationMenuPermissionsNotice,\n\t\thideNavigationMenuPermissionsNotice,\n\t] = useNavigationNotice( {\n\t\tname: 'block-library/core/navigation/permissions/update',\n\t} );\n\n\tconst {\n\t\tcreate: createNavigationMenu,\n\t\tstatus: createNavigationMenuStatus,\n\t\terror: createNavigationMenuError,\n\t\tvalue: createNavigationMenuPost,\n\t\tisPending: isCreatingNavigationMenu,\n\t\tisSuccess: createNavigationMenuIsSuccess,\n\t\tisError: createNavigationMenuIsError,\n\t} = useCreateNavigationMenu( clientId );\n\n\tconst createUntitledEmptyNavigationMenu = () => {\n\t\tcreateNavigationMenu( '' );\n\t};\n\n\tuseEffect( () => {\n\t\thideNavigationMenuStatusNotice();\n\n\t\tif ( isCreatingNavigationMenu ) {\n\t\t\tspeak( __( `Creating Navigation Menu.` ) );\n\t\t}\n\n\t\tif ( createNavigationMenuIsSuccess ) {\n\t\t\thandleUpdateMenu( createNavigationMenuPost.id, {\n\t\t\t\tfocusNavigationBlock: true,\n\t\t\t} );\n\n\t\t\tshowNavigationMenuStatusNotice(\n\t\t\t\t__( `Navigation Menu successfully created.` )\n\t\t\t);\n\t\t}\n\n\t\tif ( createNavigationMenuIsError ) {\n\t\t\tshowNavigationMenuStatusNotice(\n\t\t\t\t__( 'Failed to create Navigation Menu.' )\n\t\t\t);\n\t\t}\n\t}, [\n\t\tcreateNavigationMenuStatus,\n\t\tcreateNavigationMenuError,\n\t\tcreateNavigationMenuPost,\n\t] );\n\n\tconst {\n\t\thasUncontrolledInnerBlocks,\n\t\tuncontrolledInnerBlocks,\n\t\tisInnerBlockSelected,\n\t\tinnerBlocks,\n\t} = useInnerBlocks( clientId );\n\n\tconst hasSubmenus = !! innerBlocks.find(\n\t\t( block ) => block.name === 'core/navigation-submenu'\n\t);\n\n\tconst {\n\t\treplaceInnerBlocks,\n\t\tselectBlock,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst [ hasSavedUnsavedInnerBlocks, setHasSavedUnsavedInnerBlocks ] =\n\t\tuseState( false );\n\n\tconst [ isResponsiveMenuOpen, setResponsiveMenuVisibility ] =\n\t\tuseState( false );\n\n\tconst [ overlayMenuPreview, setOverlayMenuPreview ] = useState( false );\n\n\tconst {\n\t\thasResolvedNavigationMenus,\n\t\tisNavigationMenuResolved,\n\t\tisNavigationMenuMissing,\n\t\tnavigationMenus,\n\t\tnavigationMenu,\n\t\tcanUserUpdateNavigationMenu,\n\t\thasResolvedCanUserUpdateNavigationMenu,\n\t\tcanUserDeleteNavigationMenu,\n\t\thasResolvedCanUserDeleteNavigationMenu,\n\t\tcanUserCreateNavigationMenu,\n\t\tisResolvingCanUserCreateNavigationMenu,\n\t\thasResolvedCanUserCreateNavigationMenu,\n\t} = useNavigationMenu( ref );\n\n\tconst navMenuResolvedButMissing =\n\t\thasResolvedNavigationMenus && isNavigationMenuMissing;\n\n\t// Attempt to retrieve and prioritize any existing navigation menu unless:\n\t// - the are uncontrolled inner blocks already present in the block.\n\t// - the user is creating a new menu.\n\t// - there are no menus to choose from.\n\t// This attempts to pick the first menu if there is a single Navigation Post. If more\n\t// than 1 exists then use the most recent.\n\t// The aim is for the block to \"just work\" from a user perspective using existing data.\n\tuseEffect( () => {\n\t\tif (\n\t\t\thasUncontrolledInnerBlocks ||\n\t\t\tisCreatingNavigationMenu ||\n\t\t\tref ||\n\t\t\t! navigationMenus?.length\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tnavigationMenus.sort( ( menuA, menuB ) => {\n\t\t\tconst menuADate = new Date( menuA.date );\n\t\t\tconst menuBDate = new Date( menuB.date );\n\t\t\treturn menuADate.getTime() < menuBDate.getTime();\n\t\t} );\n\n\t\t// Only autofallback to published menus.\n\t\tconst fallbackNavigationMenus = navigationMenus.filter(\n\t\t\t( menu ) => menu.status === 'publish'\n\t\t);\n\t\tif ( fallbackNavigationMenus.length === 0 ) return;\n\n\t\t/**\n\t\t *  This fallback displays (both in editor and on front)\n\t\t *  a list of pages only if no menu (user assigned or\n\t\t *  automatically picked) is available.\n\t\t *  The fallback should not request a save (entity dirty state)\n\t\t *  nor to be undoable, hence why it is marked as non persistent\n\t\t */\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetRef( fallbackNavigationMenus[ 0 ].id );\n\t}, [ navigationMenus ] );\n\n\tconst navRef = useRef();\n\n\tconst {\n\t\tconvert: convertClassicMenu,\n\t\tstatus: classicMenuConversionStatus,\n\t\terror: classicMenuConversionError,\n\t} = useConvertClassicToBlockMenu( clientId );\n\n\tconst isConvertingClassicMenu =\n\t\tclassicMenuConversionStatus === CLASSIC_MENU_CONVERSION_PENDING;\n\n\t// The standard HTML5 tag for the block wrapper.\n\tconst TagName = 'nav';\n\n\t// \"placeholder\" shown if:\n\t// - there is no ref attribute pointing to a Navigation Post.\n\t// - there is no classic menu conversion process in progress.\n\t// - there is no menu creation process in progress.\n\t// - there are no uncontrolled blocks.\n\tconst isPlaceholder =\n\t\t! ref &&\n\t\t! isCreatingNavigationMenu &&\n\t\t! isConvertingClassicMenu &&\n\t\thasResolvedNavigationMenus &&\n\t\t! hasUncontrolledInnerBlocks;\n\n\tuseEffect( () => {\n\t\tif ( isPlaceholder && ! ref ) {\n\t\t\t/**\n\t\t\t *  this fallback only displays (both in editor and on front)\n\t\t\t *  the list of pages block if no menu is available as a fallback.\n\t\t\t *  We don't want the fallback to request a save,\n\t\t\t *  nor to be undoable, hence we mark it non persistent.\n\t\t\t */\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\treplaceInnerBlocks( clientId, [ createBlock( 'core/page-list' ) ] );\n\t\t}\n\t}, [ clientId, isPlaceholder, ref ] );\n\n\tconst isEntityAvailable =\n\t\t! isNavigationMenuMissing && isNavigationMenuResolved;\n\n\t// \"loading\" state:\n\t// - there is a menu creation process in progress.\n\t// - there is a classic menu conversion process in progress.\n\t// OR:\n\t// - there is a ref attribute pointing to a Navigation Post\n\t// - the Navigation Post isn't available (hasn't resolved) yet.\n\tconst isLoading =\n\t\t! hasResolvedNavigationMenus ||\n\t\tisCreatingNavigationMenu ||\n\t\tisConvertingClassicMenu ||\n\t\t!! ( ref && ! isEntityAvailable && ! isConvertingClassicMenu );\n\n\tconst textDecoration = attributes.style?.typography?.textDecoration;\n\n\tconst hasBlockOverlay = useBlockOverlayActive( clientId );\n\tconst blockProps = useBlockProps( {\n\t\tref: navRef,\n\t\tclassName: classnames( className, {\n\t\t\t'items-justified-right': justifyContent === 'right',\n\t\t\t'items-justified-space-between': justifyContent === 'space-between',\n\t\t\t'items-justified-left': justifyContent === 'left',\n\t\t\t'items-justified-center': justifyContent === 'center',\n\t\t\t'is-vertical': orientation === 'vertical',\n\t\t\t'no-wrap': flexWrap === 'nowrap',\n\t\t\t'is-responsive': 'never' !== overlayMenu,\n\t\t\t'has-text-color': !! textColor.color || !! textColor?.class,\n\t\t\t[ getColorClassName( 'color', textColor?.slug ) ]:\n\t\t\t\t!! textColor?.slug,\n\t\t\t'has-background': !! backgroundColor.color || backgroundColor.class,\n\t\t\t[ getColorClassName( 'background-color', backgroundColor?.slug ) ]:\n\t\t\t\t!! backgroundColor?.slug,\n\t\t\t[ `has-text-decoration-${ textDecoration }` ]: textDecoration,\n\t\t\t'block-editor-block-content-overlay': hasBlockOverlay,\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: ! textColor?.slug && textColor?.color,\n\t\t\tbackgroundColor: ! backgroundColor?.slug && backgroundColor?.color,\n\t\t},\n\t} );\n\n\t// Turn on contrast checker for web only since it's not supported on mobile yet.\n\tconst enableContrastChecking = Platform.OS === 'web';\n\n\tconst [ detectedBackgroundColor, setDetectedBackgroundColor ] = useState();\n\tconst [ detectedColor, setDetectedColor ] = useState();\n\tconst [\n\t\tdetectedOverlayBackgroundColor,\n\t\tsetDetectedOverlayBackgroundColor,\n\t] = useState();\n\tconst [ detectedOverlayColor, setDetectedOverlayColor ] = useState();\n\n\tconst handleUpdateMenu = (\n\t\tmenuId,\n\t\toptions = { focusNavigationBlock: false }\n\t) => {\n\t\tconst { focusNavigationBlock } = options;\n\t\tsetRef( menuId );\n\t\tif ( focusNavigationBlock ) {\n\t\t\tselectBlock( clientId );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\thideClassicMenuConversionNotice();\n\t\tif ( classicMenuConversionStatus === CLASSIC_MENU_CONVERSION_PENDING ) {\n\t\t\tspeak( __( 'Classic menu importing.' ) );\n\t\t}\n\n\t\tif ( classicMenuConversionStatus === CLASSIC_MENU_CONVERSION_SUCCESS ) {\n\t\t\tshowClassicMenuConversionNotice(\n\t\t\t\t__( 'Classic menu imported successfully.' )\n\t\t\t);\n\t\t}\n\n\t\tif ( classicMenuConversionStatus === CLASSIC_MENU_CONVERSION_ERROR ) {\n\t\t\tshowClassicMenuConversionNotice(\n\t\t\t\t__( 'Classic menu import failed.' )\n\t\t\t);\n\t\t}\n\t}, [ classicMenuConversionStatus, classicMenuConversionError ] );\n\n\t// Spacer block needs orientation from context. This is a patch until\n\t// https://github.com/WordPress/gutenberg/issues/36197 is addressed.\n\tuseEffect( () => {\n\t\tif ( orientation ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { orientation } );\n\t\t}\n\t}, [ orientation ] );\n\n\tuseEffect( () => {\n\t\tif ( ! enableContrastChecking ) {\n\t\t\treturn;\n\t\t}\n\t\tdetectColors(\n\t\t\tnavRef.current,\n\t\t\tsetDetectedColor,\n\t\t\tsetDetectedBackgroundColor\n\t\t);\n\t\tconst subMenuElement = navRef.current?.querySelector(\n\t\t\t'[data-type=\"core/navigation-link\"] [data-type=\"core/navigation-link\"]'\n\t\t);\n\t\tif ( subMenuElement ) {\n\t\t\tdetectColors(\n\t\t\t\tsubMenuElement,\n\t\t\t\tsetDetectedOverlayColor,\n\t\t\t\tsetDetectedOverlayBackgroundColor\n\t\t\t);\n\t\t}\n\t} );\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected && ! isInnerBlockSelected ) {\n\t\t\thideNavigationMenuPermissionsNotice();\n\t\t}\n\n\t\tif ( isSelected || isInnerBlockSelected ) {\n\t\t\tif (\n\t\t\t\tref &&\n\t\t\t\t! navMenuResolvedButMissing &&\n\t\t\t\thasResolvedCanUserUpdateNavigationMenu &&\n\t\t\t\t! canUserUpdateNavigationMenu\n\t\t\t) {\n\t\t\t\tshowNavigationMenuPermissionsNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'You do not have permission to edit this Menu. Any changes made will not be saved.'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t! ref &&\n\t\t\t\thasResolvedCanUserCreateNavigationMenu &&\n\t\t\t\t! canUserCreateNavigationMenu\n\t\t\t) {\n\t\t\t\tshowNavigationMenuPermissionsNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'You do not have permission to create Navigation Menus.'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}, [\n\t\tisSelected,\n\t\tisInnerBlockSelected,\n\t\tcanUserUpdateNavigationMenu,\n\t\thasResolvedCanUserUpdateNavigationMenu,\n\t\tcanUserCreateNavigationMenu,\n\t\thasResolvedCanUserCreateNavigationMenu,\n\t\tref,\n\t] );\n\n\tconst hasManagePermissions =\n\t\tcanUserCreateNavigationMenu || canUserUpdateNavigationMenu;\n\tconst isResponsive = 'never' !== overlayMenu;\n\n\tconst overlayMenuPreviewClasses = classnames(\n\t\t'wp-block-navigation__overlay-menu-preview',\n\t\t{ open: overlayMenuPreview }\n\t);\n\n\t// Prompt the user to publish the menu they have set as a draft\n\tconst isDraftNavigationMenu = navigationMenu?.status === 'draft';\n\tuseEffect( async () => {\n\t\thideMenuAutoPublishDraftNotice();\n\t\tif ( ! isDraftNavigationMenu ) return;\n\t\ttry {\n\t\t\tawait editEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tnavigationMenu?.id,\n\t\t\t\t{\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t} catch {\n\t\t\tshowMenuAutoPublishDraftNotice(\n\t\t\t\t__( 'Error ocurred while publishing the navigation menu.' )\n\t\t\t);\n\t\t}\n\t}, [ isDraftNavigationMenu, navigationMenu ] );\n\n\tconst stylingInspectorControls = (\n\t\t<InspectorControls>\n\t\t\t{ hasSubmenuIndicatorSetting && (\n\t\t\t\t<PanelBody title={ __( 'Display' ) }>\n\t\t\t\t\t{ isResponsive && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName={ overlayMenuPreviewClasses }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetOverlayMenuPreview(\n\t\t\t\t\t\t\t\t\t\t! overlayMenuPreview\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>\n\t\t\t\t\t\t\t\t{ hasIcon && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<OverlayMenuIcon icon={ icon } />\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ close } />\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\t{ ! hasIcon && (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<span>{ __( 'Menu' ) }</span>\n\t\t\t\t\t\t\t\t\t\t<span>{ __( 'Close' ) }</span>\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</Button>\n\t\t\t\t\t\t\t{ overlayMenuPreview && (\n\t\t\t\t\t\t\t\t<OverlayMenuPreview\n\t\t\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\t\t\thasIcon={ hasIcon }\n\t\t\t\t\t\t\t\t\ticon={ icon }\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\t<h3>{ __( 'Overlay Menu' ) }</h3>\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\tlabel={ __( 'Configure overlay menu' ) }\n\t\t\t\t\t\tvalue={ overlayMenu }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'Collapses the navigation options in a menu icon opening an overlay.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { overlayMenu: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"never\"\n\t\t\t\t\t\t\tlabel={ __( 'Off' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"mobile\"\n\t\t\t\t\t\t\tlabel={ __( 'Mobile' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"always\"\n\t\t\t\t\t\t\tlabel={ __( 'Always' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t\t{ hasSubmenus && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h3>{ __( 'Submenus' ) }</h3>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tchecked={ openSubmenusOnClick }\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\topenSubmenusOnClick: value,\n\t\t\t\t\t\t\t\t\t\t...( value && {\n\t\t\t\t\t\t\t\t\t\t\tshowSubmenuIcon: true,\n\t\t\t\t\t\t\t\t\t\t} ), // Make sure arrows are shown when we toggle this on.\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\tlabel={ __( 'Open on click' ) }\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tchecked={ showSubmenuIcon }\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\tshowSubmenuIcon: value,\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\tdisabled={ attributes.openSubmenusOnClick }\n\t\t\t\t\t\t\t\tlabel={ __( 'Show arrow' ) }\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) }\n\t\t\t{ hasColorSettings && (\n\t\t\t\t<PanelColorSettings\n\t\t\t\t\t__experimentalHasMultipleOrigins\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\ttitle={ __( 'Color' ) }\n\t\t\t\t\tinitialOpen={ false }\n\t\t\t\t\tcolorSettings={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: textColor.color,\n\t\t\t\t\t\t\tonChange: setTextColor,\n\t\t\t\t\t\t\tlabel: __( 'Text' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: backgroundColor.color,\n\t\t\t\t\t\t\tonChange: setBackgroundColor,\n\t\t\t\t\t\t\tlabel: __( 'Background' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: overlayTextColor.color,\n\t\t\t\t\t\t\tonChange: setOverlayTextColor,\n\t\t\t\t\t\t\tlabel: __( 'Submenu & overlay text' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: overlayBackgroundColor.color,\n\t\t\t\t\t\t\tonChange: setOverlayBackgroundColor,\n\t\t\t\t\t\t\tlabel: __( 'Submenu & overlay background' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t>\n\t\t\t\t\t{ enableContrastChecking && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ContrastChecker\n\t\t\t\t\t\t\t\tbackgroundColor={ detectedBackgroundColor }\n\t\t\t\t\t\t\t\ttextColor={ detectedColor }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ContrastChecker\n\t\t\t\t\t\t\t\tbackgroundColor={\n\t\t\t\t\t\t\t\t\tdetectedOverlayBackgroundColor\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttextColor={ detectedOverlayColor }\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</PanelColorSettings>\n\t\t\t) }\n\t\t</InspectorControls>\n\t);\n\n\t// If the block has inner blocks, but no menu id, then these blocks are either:\n\t// - inserted via a pattern.\n\t// - inserted directly via Code View (or otherwise).\n\t// - from an older version of navigation block added before the block used a wp_navigation entity.\n\t// Consider this state as 'unsaved' and offer an uncontrolled version of inner blocks,\n\t// that automatically saves the menu as an entity when changes are made to the inner blocks.\n\tconst hasUnsavedBlocks = hasUncontrolledInnerBlocks && ! isEntityAvailable;\n\tif ( hasUnsavedBlocks ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<PanelBody title={ __( 'Menu' ) }>\n\t\t\t\t\t\t<NavigationMenuSelector\n\t\t\t\t\t\t\tcurrentMenuId={ ref }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tonSelectNavigationMenu={ ( menuId ) => {\n\t\t\t\t\t\t\t\thandleUpdateMenu( menuId );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonSelectClassicMenu={ async ( classicMenu ) => {\n\t\t\t\t\t\t\t\tconst navMenu = await convertClassicMenu(\n\t\t\t\t\t\t\t\t\tclassicMenu.id,\n\t\t\t\t\t\t\t\t\tclassicMenu.name\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif ( navMenu ) {\n\t\t\t\t\t\t\t\t\thandleUpdateMenu( navMenu.id, {\n\t\t\t\t\t\t\t\t\t\tfocusNavigationBlock: true,\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} }\n\t\t\t\t\t\t\tonCreateNew={ createUntitledEmptyNavigationMenu }\n\t\t\t\t\t\t\tcreateNavigationMenuIsSuccess={\n\t\t\t\t\t\t\t\tcreateNavigationMenuIsSuccess\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/* translators: %s: The name of a menu. */\n\t\t\t\t\t\t\tactionLabel={ __( \"Switch to '%s'\" ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t! hasManagePermissions ||\n\t\t\t\t\t\t\t\t! hasResolvedNavigationMenus\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thref={ addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\t\tpost_type: 'wp_navigation',\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Manage menus' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</InspectorControls>\n\t\t\t\t{ stylingInspectorControls }\n\t\t\t\t<ResponsiveWrapper\n\t\t\t\t\tid={ clientId }\n\t\t\t\t\tonToggle={ setResponsiveMenuVisibility }\n\t\t\t\t\tisOpen={ isResponsiveMenuOpen }\n\t\t\t\t\thasIcon={ hasIcon }\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tisResponsive={ 'never' !== overlayMenu }\n\t\t\t\t\tisHiddenByDefault={ 'always' === overlayMenu }\n\t\t\t\t\toverlayBackgroundColor={ overlayBackgroundColor }\n\t\t\t\t\toverlayTextColor={ overlayTextColor }\n\t\t\t\t>\n\t\t\t\t\t<UnsavedInnerBlocks\n\t\t\t\t\t\tblocks={ uncontrolledInnerBlocks }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tnavigationMenus={ navigationMenus }\n\t\t\t\t\t\thasSelection={ isSelected || isInnerBlockSelected }\n\t\t\t\t\t\thasSavedUnsavedInnerBlocks={\n\t\t\t\t\t\t\thasSavedUnsavedInnerBlocks\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSave={ ( post ) => {\n\t\t\t\t\t\t\t// Set some state used as a guard to prevent the creation of multiple posts.\n\t\t\t\t\t\t\tsetHasSavedUnsavedInnerBlocks( true );\n\t\t\t\t\t\t\t// Switch to using the wp_navigation entity.\n\t\t\t\t\t\t\tsetRef( post.id );\n\n\t\t\t\t\t\t\tshowNavigationMenuStatusNotice(\n\t\t\t\t\t\t\t\t__( `New Navigation Menu created.` )\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</ResponsiveWrapper>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\t// Show a warning if the selected menu is no longer available.\n\t// TODO - the user should be able to select a new one?\n\tif ( ref && isNavigationMenuMissing ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<PanelBody title={ __( 'Menu' ) }>\n\t\t\t\t\t\t<NavigationMenuSelector\n\t\t\t\t\t\t\tcurrentMenuId={ null }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tonSelectNavigationMenu={ ( menuId ) => {\n\t\t\t\t\t\t\t\thandleUpdateMenu( menuId );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonSelectClassicMenu={ async ( classicMenu ) => {\n\t\t\t\t\t\t\t\tconst navMenu = await convertClassicMenu(\n\t\t\t\t\t\t\t\t\tclassicMenu.id,\n\t\t\t\t\t\t\t\t\tclassicMenu.name\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif ( navMenu ) {\n\t\t\t\t\t\t\t\t\thandleUpdateMenu( navMenu.id, {\n\t\t\t\t\t\t\t\t\t\tfocusNavigationBlock: true,\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} }\n\t\t\t\t\t\t\tonCreateNew={ createUntitledEmptyNavigationMenu }\n\t\t\t\t\t\t\tcreateNavigationMenuIsSuccess={\n\t\t\t\t\t\t\t\tcreateNavigationMenuIsSuccess\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/* translators: %s: The name of a menu. */\n\t\t\t\t\t\t\tactionLabel={ __( \"Switch to '%s'\" ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t! hasManagePermissions ||\n\t\t\t\t\t\t\t\t! hasResolvedNavigationMenus\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thref={ addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\t\tpost_type: 'wp_navigation',\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Manage menus' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</InspectorControls>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Navigation menu has been deleted or is unavailable. '\n\t\t\t\t\t) }\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ createUntitledEmptyNavigationMenu }\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Create a new menu?' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tif ( isEntityAvailable && hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst PlaceholderComponent = CustomPlaceholder\n\t\t? CustomPlaceholder\n\t\t: Placeholder;\n\n\t/**\n\t * Historically the navigation block has supported custom placeholders.\n\t * Even though the current UX tries as hard as possible not to\n\t * end up in a placeholder state, the block continues to support\n\t * this extensibility point, via a CustomPlaceholder.\n\t * When CustomPlaceholder is present it becomes the default fallback\n\t * for an empty navigation block, instead of the default fallbacks.\n\t *\n\t */\n\n\tif ( isPlaceholder && CustomPlaceholder ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<PlaceholderComponent\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tcurrentMenuId={ ref }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tcanUserCreateNavigationMenu={ canUserCreateNavigationMenu }\n\t\t\t\t\tisResolvingCanUserCreateNavigationMenu={\n\t\t\t\t\t\tisResolvingCanUserCreateNavigationMenu\n\t\t\t\t\t}\n\t\t\t\t\tonSelectNavigationMenu={ ( menuId ) => {\n\t\t\t\t\t\thandleUpdateMenu( menuId );\n\t\t\t\t\t} }\n\t\t\t\t\tonSelectClassicMenu={ async ( classicMenu ) => {\n\t\t\t\t\t\tconst navMenu = await convertClassicMenu(\n\t\t\t\t\t\t\tclassicMenu.id,\n\t\t\t\t\t\t\tclassicMenu.name\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( navMenu ) {\n\t\t\t\t\t\t\thandleUpdateMenu( navMenu.id, {\n\t\t\t\t\t\t\t\tfocusNavigationBlock: true,\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\tonCreateEmpty={ createUntitledEmptyNavigationMenu }\n\t\t\t\t/>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\treturn (\n\t\t<EntityProvider kind=\"postType\" type=\"wp_navigation\" id={ ref }>\n\t\t\t<RecursionProvider uniqueId={ recursionId }>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<PanelBody title={ __( 'Menu' ) }>\n\t\t\t\t\t\t<NavigationMenuSelector\n\t\t\t\t\t\t\tcurrentMenuId={ ref }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tonSelectNavigationMenu={ ( menuId ) => {\n\t\t\t\t\t\t\t\thandleUpdateMenu( menuId );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonSelectClassicMenu={ async ( classicMenu ) => {\n\t\t\t\t\t\t\t\tconst navMenu = await convertClassicMenu(\n\t\t\t\t\t\t\t\t\tclassicMenu.id,\n\t\t\t\t\t\t\t\t\tclassicMenu.name\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif ( navMenu ) {\n\t\t\t\t\t\t\t\t\thandleUpdateMenu( navMenu.id, {\n\t\t\t\t\t\t\t\t\t\tfocusNavigationBlock: true,\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} }\n\t\t\t\t\t\t\tonCreateNew={ createUntitledEmptyNavigationMenu }\n\t\t\t\t\t\t\tcreateNavigationMenuIsSuccess={\n\t\t\t\t\t\t\t\tcreateNavigationMenuIsSuccess\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcreateNavigationMenuIsError={\n\t\t\t\t\t\t\t\tcreateNavigationMenuIsError\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/* translators: %s: The name of a menu. */\n\t\t\t\t\t\t\tactionLabel={ __( \"Switch to '%s'\" ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t! hasManagePermissions ||\n\t\t\t\t\t\t\t\t! hasResolvedNavigationMenus\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thref={ addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\t\tpost_type: 'wp_navigation',\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Manage menus' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</InspectorControls>\n\t\t\t\t{ stylingInspectorControls }\n\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t\t\t{ hasResolvedCanUserUpdateNavigationMenu &&\n\t\t\t\t\t\t\tcanUserUpdateNavigationMenu && (\n\t\t\t\t\t\t\t\t<NavigationMenuNameControl />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasResolvedCanUserDeleteNavigationMenu &&\n\t\t\t\t\t\t\tcanUserDeleteNavigationMenu && (\n\t\t\t\t\t\t\t\t<NavigationMenuDeleteControl\n\t\t\t\t\t\t\t\t\tonDelete={ ( deletedMenuTitle = '' ) => {\n\t\t\t\t\t\t\t\t\t\treplaceInnerBlocks( clientId, [] );\n\t\t\t\t\t\t\t\t\t\tshowNavigationMenuStatusNotice(\n\t\t\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Navigation menu %s successfully deleted.'\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tdeletedMenuTitle\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</InspectorControls>\n\t\t\t\t) }\n\n\t\t\t\t{ isLoading && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<Spinner className=\"wp-block-navigation__loading-indicator\" />\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\n\t\t\t\t{ ! isLoading && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<ResponsiveWrapper\n\t\t\t\t\t\t\tid={ clientId }\n\t\t\t\t\t\t\tonToggle={ setResponsiveMenuVisibility }\n\t\t\t\t\t\t\tlabel={ __( 'Menu' ) }\n\t\t\t\t\t\t\thasIcon={ hasIcon }\n\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\tisOpen={ isResponsiveMenuOpen }\n\t\t\t\t\t\t\tisResponsive={ isResponsive }\n\t\t\t\t\t\t\tisHiddenByDefault={ 'always' === overlayMenu }\n\t\t\t\t\t\t\toverlayBackgroundColor={ overlayBackgroundColor }\n\t\t\t\t\t\t\toverlayTextColor={ overlayTextColor }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t\t\t\t<NavigationInnerBlocks\n\t\t\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\t\t\thasCustomPlaceholder={\n\t\t\t\t\t\t\t\t\t\t!! CustomPlaceholder\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\torientation={ orientation }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</ResponsiveWrapper>\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t</EntityProvider>\n\t);\n}\n\nexport default withColors(\n\t{ textColor: 'color' },\n\t{ backgroundColor: 'color' },\n\t{ overlayBackgroundColor: 'color' },\n\t{ overlayTextColor: 'color' }\n)( Navigation );\n","/**\n * External dependencies\n */\nimport { mapValues } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\n\nconst TYPOGRAPHY_PRESET_DEPRECATION_MAP = {\n\tfontStyle: 'var:preset|font-style|',\n\tfontWeight: 'var:preset|font-weight|',\n\ttextDecoration: 'var:preset|text-decoration|',\n\ttextTransform: 'var:preset|text-transform|',\n};\n\nconst migrateIdToRef = ( { navigationMenuId, ...attributes } ) => {\n\treturn {\n\t\t...attributes,\n\t\tref: navigationMenuId,\n\t};\n};\n\nconst migrateWithLayout = ( attributes ) => {\n\tif ( !! attributes.layout ) {\n\t\treturn attributes;\n\t}\n\n\tconst { itemsJustification, orientation, ...updatedAttributes } =\n\t\tattributes;\n\n\tif ( itemsJustification || orientation ) {\n\t\tObject.assign( updatedAttributes, {\n\t\t\tlayout: {\n\t\t\t\ttype: 'flex',\n\t\t\t\t...( itemsJustification && {\n\t\t\t\t\tjustifyContent: itemsJustification,\n\t\t\t\t} ),\n\t\t\t\t...( orientation && { orientation } ),\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn updatedAttributes;\n};\n\nconst v6 = {\n\tattributes: {\n\t\tnavigationMenuId: {\n\t\t\ttype: 'number',\n\t\t},\n\t\ttextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\trgbTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\trgbBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tshowSubmenuIcon: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\topenSubmenusOnClick: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t\toverlayMenu: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'mobile',\n\t\t},\n\t\t__unstableLocation: {\n\t\t\ttype: 'string',\n\t\t},\n\t\toverlayBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomOverlayBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\toverlayTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomOverlayTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: [ 'wide', 'full' ],\n\t\tanchor: true,\n\t\thtml: false,\n\t\tinserter: true,\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalTextDecoration: true,\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tfontSize: true,\n\t\t\t},\n\t\t},\n\t\tspacing: {\n\t\t\tblockGap: true,\n\t\t\tunits: [ 'px', 'em', 'rem', 'vh', 'vw' ],\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tblockGap: true,\n\t\t\t},\n\t\t},\n\t\t__experimentalLayout: {\n\t\t\tallowSwitching: false,\n\t\t\tallowInheriting: false,\n\t\t\tdefault: {\n\t\t\t\ttype: 'flex',\n\t\t\t},\n\t\t},\n\t},\n\tsave() {\n\t\treturn <InnerBlocks.Content />;\n\t},\n\tisEligible: ( { navigationMenuId } ) => !! navigationMenuId,\n\tmigrate: migrateIdToRef,\n};\n\nconst v5 = {\n\tattributes: {\n\t\tnavigationMenuId: {\n\t\t\ttype: 'number',\n\t\t},\n\t\torientation: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'horizontal',\n\t\t},\n\t\ttextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\trgbTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\trgbBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\titemsJustification: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tshowSubmenuIcon: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\topenSubmenusOnClick: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t\toverlayMenu: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'never',\n\t\t},\n\t\t__unstableLocation: {\n\t\t\ttype: 'string',\n\t\t},\n\t\toverlayBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomOverlayBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\toverlayTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomOverlayTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: [ 'wide', 'full' ],\n\t\tanchor: true,\n\t\thtml: false,\n\t\tinserter: true,\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalTextDecoration: true,\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tfontSize: true,\n\t\t\t},\n\t\t},\n\t\tspacing: {\n\t\t\tblockGap: true,\n\t\t\tunits: [ 'px', 'em', 'rem', 'vh', 'vw' ],\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tblockGap: true,\n\t\t\t},\n\t\t},\n\t},\n\tsave() {\n\t\treturn <InnerBlocks.Content />;\n\t},\n\tisEligible: ( { itemsJustification, orientation } ) =>\n\t\t!! itemsJustification || !! orientation,\n\tmigrate: compose( migrateIdToRef, migrateWithLayout ),\n};\n\nconst v4 = {\n\tattributes: {\n\t\torientation: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'horizontal',\n\t\t},\n\t\ttextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\trgbTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tbackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\trgbBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\titemsJustification: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tshowSubmenuIcon: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\topenSubmenusOnClick: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t\toverlayMenu: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'never',\n\t\t},\n\t\t__unstableLocation: {\n\t\t\ttype: 'string',\n\t\t},\n\t\toverlayBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomOverlayBackgroundColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\toverlayTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomOverlayTextColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: [ 'wide', 'full' ],\n\t\tanchor: true,\n\t\thtml: false,\n\t\tinserter: true,\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalTextDecoration: true,\n\t\t},\n\t\tspacing: {\n\t\t\tblockGap: true,\n\t\t\tunits: [ 'px', 'em', 'rem', 'vh', 'vw' ],\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tblockGap: true,\n\t\t\t},\n\t\t},\n\t},\n\tsave() {\n\t\treturn <InnerBlocks.Content />;\n\t},\n\tmigrate: compose( migrateIdToRef, migrateWithLayout, migrateFontFamily ),\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\nconst migrateIsResponsive = function ( attributes ) {\n\tdelete attributes.isResponsive;\n\treturn {\n\t\t...attributes,\n\t\toverlayMenu: 'mobile',\n\t};\n};\n\nconst migrateTypographyPresets = function ( attributes ) {\n\treturn {\n\t\t...attributes,\n\t\tstyle: {\n\t\t\t...attributes.style,\n\t\t\ttypography: mapValues(\n\t\t\t\tattributes.style.typography,\n\t\t\t\t( value, key ) => {\n\t\t\t\t\tconst prefix = TYPOGRAPHY_PRESET_DEPRECATION_MAP[ key ];\n\t\t\t\t\tif ( prefix && value.startsWith( prefix ) ) {\n\t\t\t\t\t\tconst newValue = value.slice( prefix.length );\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t'textDecoration' === key &&\n\t\t\t\t\t\t\t'strikethrough' === newValue\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn 'line-through';\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn newValue;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t),\n\t\t},\n\t};\n};\n\nconst deprecated = [\n\tv6,\n\tv5,\n\tv4,\n\t// Remove `isResponsive` attribute.\n\t{\n\t\tattributes: {\n\t\t\torientation: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'horizontal',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\trgbTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\trgbBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\titemsJustification: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tshowSubmenuIcon: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: true,\n\t\t\t},\n\t\t\topenSubmenusOnClick: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tisResponsive: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: 'false',\n\t\t\t},\n\t\t\t__unstableLocation: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\toverlayBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomOverlayBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\toverlayTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomOverlayTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\tanchor: true,\n\t\t\thtml: false,\n\t\t\tinserter: true,\n\t\t\ttypography: {\n\t\t\t\tfontSize: true,\n\t\t\t\tlineHeight: true,\n\t\t\t\t__experimentalFontStyle: true,\n\t\t\t\t__experimentalFontWeight: true,\n\t\t\t\t__experimentalTextTransform: true,\n\t\t\t\t__experimentalFontFamily: true,\n\t\t\t\t__experimentalTextDecoration: true,\n\t\t\t},\n\t\t},\n\t\tisEligible( attributes ) {\n\t\t\treturn attributes.isResponsive;\n\t\t},\n\t\tmigrate: compose(\n\t\t\tmigrateIdToRef,\n\t\t\tmigrateWithLayout,\n\t\t\tmigrateFontFamily,\n\t\t\tmigrateIsResponsive\n\t\t),\n\t\tsave() {\n\t\t\treturn <InnerBlocks.Content />;\n\t\t},\n\t},\n\t{\n\t\tattributes: {\n\t\t\torientation: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\trgbTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\trgbBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\titemsJustification: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tshowSubmenuIcon: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: true,\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\tanchor: true,\n\t\t\thtml: false,\n\t\t\tinserter: true,\n\t\t\tfontSize: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\tcolor: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalTextDecoration: true,\n\t\t},\n\t\tsave() {\n\t\t\treturn <InnerBlocks.Content />;\n\t\t},\n\t\tisEligible( attributes ) {\n\t\t\tif ( ! attributes.style || ! attributes.style.typography ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor ( const styleAttribute in TYPOGRAPHY_PRESET_DEPRECATION_MAP ) {\n\t\t\t\tconst attributeValue =\n\t\t\t\t\tattributes.style.typography[ styleAttribute ];\n\t\t\t\tif (\n\t\t\t\t\tattributeValue &&\n\t\t\t\t\tattributeValue.startsWith(\n\t\t\t\t\t\tTYPOGRAPHY_PRESET_DEPRECATION_MAP[ styleAttribute ]\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tmigrate: compose(\n\t\t\tmigrateIdToRef,\n\t\t\tmigrateWithLayout,\n\t\t\tmigrateFontFamily,\n\t\t\tmigrateTypographyPresets\n\t\t),\n\t},\n\t{\n\t\tattributes: {\n\t\t\tclassName: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\trgbTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\trgbBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tfontSize: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomFontSize: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\titemsJustification: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tshowSubmenuIcon: {\n\t\t\t\ttype: 'boolean',\n\t\t\t},\n\t\t},\n\t\tisEligible( attribute ) {\n\t\t\treturn attribute.rgbTextColor || attribute.rgbBackgroundColor;\n\t\t},\n\t\tsupports: {\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\tanchor: true,\n\t\t\thtml: false,\n\t\t\tinserter: true,\n\t\t},\n\t\tmigrate: compose( migrateIdToRef, ( attributes ) => {\n\t\t\tconst { rgbTextColor, rgbBackgroundColor, ...restAttributes } =\n\t\t\t\tattributes;\n\t\t\treturn {\n\t\t\t\t...restAttributes,\n\t\t\t\tcustomTextColor: attributes.textColor\n\t\t\t\t\t? undefined\n\t\t\t\t\t: attributes.rgbTextColor,\n\t\t\t\tcustomBackgroundColor: attributes.backgroundColor\n\t\t\t\t\t? undefined\n\t\t\t\t\t: attributes.rgbBackgroundColor,\n\t\t\t};\n\t\t} ),\n\t\tsave() {\n\t\t\treturn <InnerBlocks.Content />;\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { navigation 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 save from './save';\nimport deprecated from './deprecated';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/navigation-link',\n\t\t\t\tattributes: {\n\t\t\t\t\t// translators: 'Home' as in a website's home page.\n\t\t\t\t\tlabel: __( 'Home' ),\n\t\t\t\t\turl: 'https://make.wordpress.org/',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/navigation-link',\n\t\t\t\tattributes: {\n\t\t\t\t\t// translators: 'About' as in a website's about page.\n\t\t\t\t\tlabel: __( 'About' ),\n\t\t\t\t\turl: 'https://make.wordpress.org/',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/navigation-link',\n\t\t\t\tattributes: {\n\t\t\t\t\t// translators: 'Contact' as in a website's contact page.\n\t\t\t\t\tlabel: __( 'Contact' ),\n\t\t\t\t\turl: 'https://make.wordpress.org/',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tif ( attributes.ref ) {\n\t\t// Avoid rendering inner blocks when a ref is defined.\n\t\t// When this id is defined the inner blocks are loaded from the\n\t\t// `wp_navigation` entity rather than the hard-coded block html.\n\t\treturn;\n\t}\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst customLink = (\n\t<SVG xmlns=\"https://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M12.5 14.5h-1V16h1c2.2 0 4-1.8 4-4s-1.8-4-4-4h-1v1.5h1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5zm-4 1.5v-1.5h-1C6.1 14.5 5 13.4 5 12s1.1-2.5 2.5-2.5h1V8h-1c-2.2 0-4 1.8-4 4s1.8 4 4 4h1zm-1-3.2h5v-1.5h-5v1.5zM18 4H9c-1.1 0-2 .9-2 2v.5h1.5V6c0-.3.2-.5.5-.5h9c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5v-.5H7v.5c0 1.1.9 2 2 2h9c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2z\" />\n\t</SVG>\n);\n\nexport default customLink;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst addSubmenu = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M2 12c0 3.6 2.4 5.5 6 5.5h.5V19l3-2.5-3-2.5v2H8c-2.5 0-4.5-1.5-4.5-4s2-4.5 4.5-4.5h3.5V6H8c-3.6 0-6 2.4-6 6zm19.5-1h-8v1.5h8V11zm0 5h-8v1.5h8V16zm0-10h-8v1.5h8V6z\" />\n\t</SVG>\n);\n\nexport default addSubmenu;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { escape, unescape } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock, switchToBlockType } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\tPanelBody,\n\tPopover,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tTooltip,\n\tToolbarGroup,\n\tKeyboardShortcuts,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tRichText,\n\t__experimentalLinkControl as LinkControl,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP, safeDecodeURI } from '@wordpress/url';\nimport {\n\tFragment,\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport { placeCaretAtHorizontalEdge } from '@wordpress/dom';\nimport { link as linkIcon, addSubmenu } from '@wordpress/icons';\nimport {\n\tstore as coreStore,\n\tuseResourcePermissions,\n} from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { name } from './block.json';\n\n/**\n * A React hook to determine if it's dragging within the target element.\n *\n * @typedef {import('@wordpress/element').RefObject} RefObject\n *\n * @param {RefObject<HTMLElement>} elementRef The target elementRef object.\n *\n * @return {boolean} Is dragging within the target element.\n */\nconst useIsDraggingWithin = ( elementRef ) => {\n\tconst [ isDraggingWithin, setIsDraggingWithin ] = useState( false );\n\n\tuseEffect( () => {\n\t\tconst { ownerDocument } = elementRef.current;\n\n\t\tfunction handleDragStart( event ) {\n\t\t\t// Check the first time when the dragging starts.\n\t\t\thandleDragEnter( event );\n\t\t}\n\n\t\t// Set to false whenever the user cancel the drag event by either releasing the mouse or press Escape.\n\t\tfunction handleDragEnd() {\n\t\t\tsetIsDraggingWithin( false );\n\t\t}\n\n\t\tfunction handleDragEnter( event ) {\n\t\t\t// Check if the current target is inside the item element.\n\t\t\tif ( elementRef.current.contains( event.target ) ) {\n\t\t\t\tsetIsDraggingWithin( true );\n\t\t\t} else {\n\t\t\t\tsetIsDraggingWithin( false );\n\t\t\t}\n\t\t}\n\n\t\t// Bind these events to the document to catch all drag events.\n\t\t// Ideally, we can also use `event.relatedTarget`, but sadly that\n\t\t// doesn't work in Safari.\n\t\townerDocument.addEventListener( 'dragstart', handleDragStart );\n\t\townerDocument.addEventListener( 'dragend', handleDragEnd );\n\t\townerDocument.addEventListener( 'dragenter', handleDragEnter );\n\n\t\treturn () => {\n\t\t\townerDocument.removeEventListener( 'dragstart', handleDragStart );\n\t\t\townerDocument.removeEventListener( 'dragend', handleDragEnd );\n\t\t\townerDocument.removeEventListener( 'dragenter', handleDragEnter );\n\t\t};\n\t}, [] );\n\n\treturn isDraggingWithin;\n};\n\n/**\n * Given the Link block's type attribute, return the query params to give to\n * /wp/v2/search.\n *\n * @param {string} type Link block's type attribute.\n * @param {string} kind Link block's entity of kind (post-type|taxonomy)\n * @return {{ type?: string, subtype?: string }} Search query params.\n */\nfunction getSuggestionsQuery( type, kind ) {\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\tcase 'page':\n\t\t\treturn { type: 'post', subtype: type };\n\t\tcase 'category':\n\t\t\treturn { type: 'term', subtype: 'category' };\n\t\tcase 'tag':\n\t\t\treturn { type: 'term', subtype: 'post_tag' };\n\t\tcase 'post_format':\n\t\t\treturn { type: 'post-format' };\n\t\tdefault:\n\t\t\tif ( kind === 'taxonomy' ) {\n\t\t\t\treturn { type: 'term', subtype: type };\n\t\t\t}\n\t\t\tif ( kind === 'post-type' ) {\n\t\t\t\treturn { type: 'post', subtype: type };\n\t\t\t}\n\t\t\treturn {};\n\t}\n}\n\n/**\n * Determine the colors for a menu.\n *\n * Order of priority is:\n * 1: Overlay custom colors (if submenu)\n * 2: Overlay theme colors (if submenu)\n * 3: Custom colors\n * 4: Theme colors\n * 5: Global styles\n *\n * @param {Object}  context\n * @param {boolean} isSubMenu\n */\nfunction getColors( context, isSubMenu ) {\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t\toverlayTextColor,\n\t\tcustomOverlayTextColor,\n\t\toverlayBackgroundColor,\n\t\tcustomOverlayBackgroundColor,\n\t\tstyle,\n\t} = context;\n\n\tconst colors = {};\n\n\tif ( isSubMenu && !! customOverlayTextColor ) {\n\t\tcolors.customTextColor = customOverlayTextColor;\n\t} else if ( isSubMenu && !! overlayTextColor ) {\n\t\tcolors.textColor = overlayTextColor;\n\t} else if ( !! customTextColor ) {\n\t\tcolors.customTextColor = customTextColor;\n\t} else if ( !! textColor ) {\n\t\tcolors.textColor = textColor;\n\t} else if ( !! style?.color?.text ) {\n\t\tcolors.customTextColor = style.color.text;\n\t}\n\n\tif ( isSubMenu && !! customOverlayBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customOverlayBackgroundColor;\n\t} else if ( isSubMenu && !! overlayBackgroundColor ) {\n\t\tcolors.backgroundColor = overlayBackgroundColor;\n\t} else if ( !! customBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customBackgroundColor;\n\t} else if ( !! backgroundColor ) {\n\t\tcolors.backgroundColor = backgroundColor;\n\t} else if ( !! style?.color?.background ) {\n\t\tcolors.customTextColor = style.color.background;\n\t}\n\n\treturn colors;\n}\n\n/**\n * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind\n */\n\n/**\n * Navigation Link Block Attributes\n *\n * @typedef {Object} WPNavigationLinkBlockAttributes\n *\n * @property {string}               [label]         Link text.\n * @property {WPNavigationLinkKind} [kind]          Kind is used to differentiate between term and post ids to check post draft status.\n * @property {string}               [type]          The type such as post, page, tag, category and other custom types.\n * @property {string}               [rel]           The relationship of the linked URL.\n * @property {number}               [id]            A post or term id.\n * @property {boolean}              [opensInNewTab] Sets link target to _blank when true.\n * @property {string}               [url]           Link href.\n * @property {string}               [title]         Link title attribute.\n */\n\n/**\n * Link Control onChange handler that updates block attributes when a setting is changed.\n *\n * @param {Object}                          updatedValue    New block attributes to update.\n * @param {Function}                        setAttributes   Block attribute update function.\n * @param {WPNavigationLinkBlockAttributes} blockAttributes Current block attributes.\n *\n */\nexport const updateNavigationLinkBlockAttributes = (\n\tupdatedValue = {},\n\tsetAttributes,\n\tblockAttributes = {}\n) => {\n\tconst {\n\t\tlabel: originalLabel = '',\n\t\tkind: originalKind = '',\n\t\ttype: originalType = '',\n\t} = blockAttributes;\n\n\tconst {\n\t\ttitle: newLabel = '', // the title of any provided Post.\n\t\turl: newUrl = '',\n\n\t\topensInNewTab,\n\t\tid,\n\t\tkind: newKind = originalKind,\n\t\ttype: newType = originalType,\n\t} = updatedValue;\n\n\tconst newLabelWithoutHttp = newLabel.replace( /http(s?):\\/\\//gi, '' );\n\tconst newUrlWithoutHttp = newUrl.replace( /http(s?):\\/\\//gi, '' );\n\n\tconst useNewLabel =\n\t\tnewLabel &&\n\t\tnewLabel !== originalLabel &&\n\t\t// LinkControl without the title field relies\n\t\t// on the check below. Specifically, it assumes that\n\t\t// the URL is the same as a title.\n\t\t// This logic a) looks suspicious and b) should really\n\t\t// live in the LinkControl and not here. It's a great\n\t\t// candidate for future refactoring.\n\t\tnewLabelWithoutHttp !== newUrlWithoutHttp;\n\n\t// Unfortunately this causes the escaping model to be inverted.\n\t// The escaped content is stored in the block attributes (and ultimately in the database),\n\t// and then the raw data is \"recovered\" when outputting into the DOM.\n\t// It would be preferable to store the **raw** data in the block attributes and escape it in JS.\n\t// Why? Because there isn't one way to escape data. Depending on the context, you need to do\n\t// different transforms. It doesn't make sense to me to choose one of them for the purposes of storage.\n\t// See also:\n\t// - https://github.com/WordPress/gutenberg/pull/41063\n\t// - https://github.com/WordPress/gutenberg/pull/18617.\n\tconst label = useNewLabel\n\t\t? escape( newLabel )\n\t\t: originalLabel || escape( newUrlWithoutHttp );\n\n\t// In https://github.com/WordPress/gutenberg/pull/24670 we decided to use \"tag\" in favor of \"post_tag\"\n\tconst type = newType === 'post_tag' ? 'tag' : newType.replace( '-', '_' );\n\n\tconst isBuiltInType =\n\t\t[ 'post', 'page', 'tag', 'category' ].indexOf( type ) > -1;\n\n\tconst isCustomLink =\n\t\t( ! newKind && ! isBuiltInType ) || newKind === 'custom';\n\tconst kind = isCustomLink ? 'custom' : newKind;\n\n\tsetAttributes( {\n\t\t// Passed `url` may already be encoded. To prevent double encoding, decodeURI is executed to revert to the original string.\n\t\t...( newUrl && { url: encodeURI( safeDecodeURI( newUrl ) ) } ),\n\t\t...( label && { label } ),\n\t\t...( undefined !== opensInNewTab && { opensInNewTab } ),\n\t\t...( id && Number.isInteger( id ) && { id } ),\n\t\t...( kind && { kind } ),\n\t\t...( type && type !== 'URL' && { type } ),\n\t} );\n};\n\nconst useIsInvalidLink = ( kind, type, id ) => {\n\tconst isPostType =\n\t\tkind === 'post-type' || type === 'post' || type === 'page';\n\tconst hasId = Number.isInteger( id );\n\tconst postStatus = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isPostType ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst { getEntityRecord } = select( coreStore );\n\t\t\treturn getEntityRecord( 'postType', type, id )?.status;\n\t\t},\n\t\t[ isPostType, type, id ]\n\t);\n\n\t// Check Navigation Link validity if:\n\t// 1. Link is 'post-type'.\n\t// 2. It has an id.\n\t// 3. It's neither null, nor undefined, as valid items might be either of those while loading.\n\t// If those conditions are met, check if\n\t// 1. The post status is published.\n\t// 2. The Navigation Link item has no label.\n\t// If either of those is true, invalidate.\n\tconst isInvalid =\n\t\tisPostType && hasId && postStatus && 'trash' === postStatus;\n\tconst isDraft = 'draft' === postStatus;\n\n\treturn [ isInvalid, isDraft ];\n};\n\nfunction getMissingText( type ) {\n\tlet missingText = '';\n\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\t\t/* translators: label for missing post in navigation link block */\n\t\t\tmissingText = __( 'Select post' );\n\t\t\tbreak;\n\t\tcase 'page':\n\t\t\t/* translators: label for missing page in navigation link block */\n\t\t\tmissingText = __( 'Select page' );\n\t\t\tbreak;\n\t\tcase 'category':\n\t\t\t/* translators: label for missing category in navigation link block */\n\t\t\tmissingText = __( 'Select category' );\n\t\t\tbreak;\n\t\tcase 'tag':\n\t\t\t/* translators: label for missing tag in navigation link block */\n\t\t\tmissingText = __( 'Select tag' );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t/* translators: label for missing values in navigation link block */\n\t\t\tmissingText = __( 'Add link' );\n\t}\n\n\treturn missingText;\n}\n\n/**\n * Removes HTML from a given string.\n * Note the does not provide XSS protection or otherwise attempt\n * to filter strings with malicious intent.\n *\n * See also: https://github.com/WordPress/gutenberg/pull/35539\n *\n * @param {string} html the string from which HTML should be removed.\n * @return {string} the \"cleaned\" string.\n */\nfunction navStripHTML( html ) {\n\tconst doc = document.implementation.createHTMLDocument( '' );\n\tdoc.body.innerHTML = html;\n\treturn doc.body.textContent || '';\n}\n\n/**\n * Add transforms to Link Control\n */\n\nfunction LinkControlTransforms( { clientId, replace } ) {\n\tconst { getBlock, blockTransforms } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlock: _getBlock,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tgetBlock: _getBlock,\n\t\t\t\tblockTransforms: getBlockTransformItems(\n\t\t\t\t\t_getBlock( clientId ),\n\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst featuredBlocks = [\n\t\t'core/site-logo',\n\t\t'core/social-links',\n\t\t'core/search',\n\t];\n\tconst transforms = blockTransforms.filter( ( item ) => {\n\t\treturn featuredBlocks.includes( item.name );\n\t} );\n\n\tif ( ! transforms?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"link-control-transform\">\n\t\t\t<h3 className=\"link-control-transform__subheading\">\n\t\t\t\t{ __( 'Transform' ) }\n\t\t\t</h3>\n\t\t\t<div className=\"link-control-transform__items\">\n\t\t\t\t{ transforms.map( ( item, index ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={ `transform-${ index }` }\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\treplace(\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\tswitchToBlockType(\n\t\t\t\t\t\t\t\t\t\tgetBlock( clientId ),\n\t\t\t\t\t\t\t\t\t\titem.name\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}\n\t\t\t\t\t\t\tclassName=\"link-control-transform__item\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockIcon icon={ item.icon } />\n\t\t\t\t\t\t\t{ item.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default function NavigationLinkEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\tid,\n\t\tlabel,\n\t\ttype,\n\t\topensInNewTab,\n\t\turl,\n\t\tdescription,\n\t\trel,\n\t\ttitle,\n\t\tkind,\n\t} = attributes;\n\n\tconst [ isInvalid, isDraft ] = useIsInvalidLink( kind, type, id );\n\tconst { maxNestingLevel } = context;\n\n\tconst link = {\n\t\turl,\n\t\topensInNewTab,\n\t\ttitle: label && navStripHTML( label ), // don't allow HTML to display inside the <LinkControl>\n\t};\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { replaceBlock, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add link…' );\n\tconst ref = useRef();\n\n\tconst pagesPermissions = useResourcePermissions( 'pages' );\n\tconst postsPermissions = useResourcePermissions( 'posts' );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tisAtMaxNesting,\n\t\tisTopLevelLink,\n\t\tisParentOfSelectedBlock,\n\t\thasChildren,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tinnerBlocks: getBlocks( clientId ),\n\t\t\t\tisAtMaxNesting:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\t'core/navigation-submenu',\n\t\t\t\t\t] ).length >= maxNestingLevel,\n\t\t\t\tisTopLevelLink:\n\t\t\t\t\tgetBlockName( getBlockRootClientId( clientId ) ) ===\n\t\t\t\t\t'core/navigation',\n\t\t\t\tisParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t\t\thasChildren: !! getBlockCount( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tuseEffect( () => {\n\t\t// This side-effect should not create an undo level as those should\n\t\t// only be created via user interactions. Mark this change as\n\t\t// not persistent to avoid undo level creation.\n\t\t// See https://github.com/WordPress/gutenberg/issues/34564.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetAttributes( { isTopLevelLink } );\n\t}, [ isTopLevelLink ] );\n\n\t/**\n\t * Transform to submenu block.\n\t */\n\tfunction transformToSubmenu() {\n\t\tconst newSubmenu = createBlock(\n\t\t\t'core/navigation-submenu',\n\t\t\tattributes,\n\t\t\tinnerBlocks\n\t\t);\n\t\treplaceBlock( clientId, newSubmenu );\n\t}\n\n\tuseEffect( () => {\n\t\t// Show the LinkControl on mount if the URL is empty\n\t\t// ( When adding a new menu item)\n\t\t// This can't be done in the useState call because it conflicts\n\t\t// with the autofocus behavior of the BlockListBlock component.\n\t\tif ( ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t\t// If block has inner blocks, transform to Submenu.\n\t\tif ( hasChildren ) {\n\t\t\ttransformToSubmenu();\n\t\t}\n\t}, [] );\n\n\t/**\n\t * The hook shouldn't be necessary but due to a focus loss happening\n\t * when selecting a suggestion in the link popover, we force close on block unselection.\n\t */\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsLinkOpen( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text.\n\tuseEffect( () => {\n\t\tif ( isLinkOpen && url ) {\n\t\t\t// Does this look like a URL and have something TLD-ish?\n\t\t\tif (\n\t\t\t\tisURL( prependHTTP( label ) ) &&\n\t\t\t\t/^.+\\.[a-z]+/.test( label )\n\t\t\t) {\n\t\t\t\t// Focus and select the label text.\n\t\t\t\tselectLabelText();\n\t\t\t} else {\n\t\t\t\t// Focus it (but do not select).\n\t\t\t\tplaceCaretAtHorizontalEdge( ref.current, true );\n\t\t\t}\n\t\t}\n\t}, [ url ] );\n\n\t/**\n\t * Focus the Link label text and select it.\n\t */\n\tfunction selectLabelText() {\n\t\tref.current.focus();\n\t\tconst { ownerDocument } = ref.current;\n\t\tconst { defaultView } = ownerDocument;\n\t\tconst selection = defaultView.getSelection();\n\t\tconst range = ownerDocument.createRange();\n\t\t// Get the range of the current ref contents so we can add this range to the selection.\n\t\trange.selectNodeContents( ref.current );\n\t\tselection.removeAllRanges();\n\t\tselection.addRange( range );\n\t}\n\n\t/**\n\t * Removes the current link if set.\n\t */\n\tfunction removeLink() {\n\t\t// Reset all attributes that comprise the link.\n\t\tsetAttributes( {\n\t\t\turl: '',\n\t\t\tlabel: '',\n\t\t\tid: '',\n\t\t\tkind: '',\n\t\t\ttype: '',\n\t\t} );\n\n\t\t// Close the link editing UI.\n\t\tsetIsLinkOpen( false );\n\t}\n\n\tlet userCanCreate = false;\n\tif ( ! type || type === 'page' ) {\n\t\tuserCanCreate = pagesPermissions.canCreate;\n\t} else if ( type === 'post' ) {\n\t\tuserCanCreate = postsPermissions.canCreate;\n\t}\n\n\tasync function handleCreate( pageTitle ) {\n\t\tconst postType = type || 'page';\n\n\t\tconst page = await saveEntityRecord( 'postType', postType, {\n\t\t\ttitle: pageTitle,\n\t\t\tstatus: 'draft',\n\t\t} );\n\n\t\treturn {\n\t\t\tid: page.id,\n\t\t\ttype: postType,\n\t\t\t// Make `title` property consistent with that in `fetchLinkSuggestions` where the `rendered` title (containing HTML entities)\n\t\t\t// is also being decoded. By being consistent in both locations we avoid having to branch in the rendering output code.\n\t\t\t// Ideally in the future we will update both APIs to utilise the \"raw\" form of the title which is better suited to edit contexts.\n\t\t\t// e.g.\n\t\t\t// - title.raw = \"Yes & No\"\n\t\t\t// - title.rendered = \"Yes &#038; No\"\n\t\t\t// - decodeEntities( title.rendered ) = \"Yes & No\"\n\t\t\t// See:\n\t\t\t// - https://github.com/WordPress/gutenberg/pull/41063\n\t\t\t// - https://github.com/WordPress/gutenberg/blob/a1e1fdc0e6278457e9f4fc0b31ac6d2095f5450b/packages/core-data/src/fetch/__experimental-fetch-link-suggestions.js#L212-L218\n\t\t\ttitle: decodeEntities( page.title.rendered ),\n\t\t\turl: page.link,\n\t\t\tkind: 'post-type',\n\t\t};\n\t}\n\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t} = getColors( context, ! isTopLevelLink );\n\n\tfunction onKeyDown( event ) {\n\t\tif (\n\t\t\tisKeyboardEvent.primary( event, 'k' ) ||\n\t\t\t( ! url && event.keyCode === ENTER )\n\t\t) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, listItemRef ] ),\n\t\tclassName: classnames( 'wp-block-navigation-item', {\n\t\t\t'is-editing': isSelected || isParentOfSelectedBlock,\n\t\t\t'is-dragging-within': isDraggingWithin,\n\t\t\t'has-link': !! url,\n\t\t\t'has-child': hasChildren,\n\t\t\t'has-text-color': !! textColor || !! customTextColor,\n\t\t\t[ getColorClassName( 'color', textColor ) ]: !! textColor,\n\t\t\t'has-background': !! backgroundColor || customBackgroundColor,\n\t\t\t[ getColorClassName( 'background-color', backgroundColor ) ]:\n\t\t\t\t!! backgroundColor,\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: ! textColor && customTextColor,\n\t\t\tbackgroundColor: ! backgroundColor && customBackgroundColor,\n\t\t},\n\t\tonKeyDown,\n\t} );\n\n\tif ( ! url || isInvalid || isDraft ) {\n\t\tblockProps.onClick = () => setIsLinkOpen( true );\n\t}\n\n\tconst classes = classnames( 'wp-block-navigation-item__content', {\n\t\t'wp-block-navigation-link__placeholder': ! url || isInvalid || isDraft,\n\t} );\n\n\tconst missingText = getMissingText( type );\n\t/* translators: Whether the navigation link is Invalid or a Draft. */\n\tconst placeholderText = `(${\n\t\tisInvalid ? __( 'Invalid' ) : __( 'Draft' )\n\t})`;\n\tconst tooltipText =\n\t\tisInvalid || isDraft\n\t\t\t? __( 'This item has been deleted, or is a draft' )\n\t\t\t: __( 'This item is missing a link' );\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\tonClick={ () => setIsLinkOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! isAtMaxNesting && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"submenu\"\n\t\t\t\t\t\t\ticon={ addSubmenu }\n\t\t\t\t\t\t\ttitle={ __( 'Add submenu' ) }\n\t\t\t\t\t\t\tonClick={ transformToSubmenu }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\tvalue={ description || '' }\n\t\t\t\t\t\tonChange={ ( descriptionValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { description: descriptionValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Description' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The description will be displayed in the menu if the current theme supports it.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\t\tonChange={ ( titleValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { title: titleValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Link title' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\tonChange={ ( relValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { rel: relValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ /* eslint-disable jsx-a11y/anchor-is-valid */ }\n\t\t\t\t<a className={ classes }>\n\t\t\t\t\t{ /* eslint-enable */ }\n\t\t\t\t\t{ ! url ? (\n\t\t\t\t\t\t<div className=\"wp-block-navigation-link__placeholder-text\">\n\t\t\t\t\t\t\t<Tooltip position=\"top center\" text={ tooltipText }>\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<span>{ missingText }</span>\n\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-link__missing_text-tooltip\">\n\t\t\t\t\t\t\t\t\t\t{ tooltipText }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ ! isInvalid && ! isDraft && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: labelValue,\n\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'core/navigation-link'\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Navigation link text'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\t\t\t\tallowedFormats={ [\n\t\t\t\t\t\t\t\t\t\t\t'core/bold',\n\t\t\t\t\t\t\t\t\t\t\t'core/italic',\n\t\t\t\t\t\t\t\t\t\t\t'core/image',\n\t\t\t\t\t\t\t\t\t\t\t'core/strikethrough',\n\t\t\t\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tif ( ! url ) {\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{ description && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-item__description\">\n\t\t\t\t\t\t\t\t\t\t\t{ description }\n\t\t\t\t\t\t\t\t\t\t</span>\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) }\n\t\t\t\t\t\t\t{ ( isInvalid || isDraft ) && (\n\t\t\t\t\t\t\t\t<div className=\"wp-block-navigation-link__placeholder-text wp-block-navigation-link__label\">\n\t\t\t\t\t\t\t\t\t<KeyboardShortcuts\n\t\t\t\t\t\t\t\t\t\tshortcuts={ {\n\t\t\t\t\t\t\t\t\t\t\tenter: () =>\n\t\t\t\t\t\t\t\t\t\t\t\tisSelected &&\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true ),\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\t\t\tposition=\"top center\"\n\t\t\t\t\t\t\t\t\t\ttext={ tooltipText }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Navigation link text'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Some attributes are stored in an escaped form. It's a legacy issue.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Ideally they would be stored in a raw, unescaped form.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Unescape is used here to \"recover\" the escaped characters\n\t\t\t\t\t\t\t\t\t\t\t\t\t// so they display without encoding.\n\t\t\t\t\t\t\t\t\t\t\t\t\t// See `updateNavigationLinkBlockAttributes` for more details.\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${ unescape(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t\t\t\t) } ${ placeholderText }`.trim()\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wp-block-navigation-link__missing_text-tooltip\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ tooltipText }\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t</div>\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\t{ isLinkOpen && (\n\t\t\t\t\t\t<Popover\n\t\t\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\t\t\tonClose={ () => setIsLinkOpen( false ) }\n\t\t\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\t\t\tshift\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\thasTextControl\n\t\t\t\t\t\t\t\thasRichPreviews\n\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-link__inline-link-input\"\n\t\t\t\t\t\t\t\tvalue={ link }\n\t\t\t\t\t\t\t\tshowInitialSuggestions={ true }\n\t\t\t\t\t\t\t\twithCreateSuggestion={ userCanCreate }\n\t\t\t\t\t\t\t\tcreateSuggestion={ handleCreate }\n\t\t\t\t\t\t\t\tcreateSuggestionButtonText={ ( searchTerm ) => {\n\t\t\t\t\t\t\t\t\tlet format;\n\t\t\t\t\t\t\t\t\tif ( type === 'post' ) {\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\t\t\t\t\tformat = __(\n\t\t\t\t\t\t\t\t\t\t\t'Create draft post: <mark>%s</mark>'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\t\t\t\t\tformat = __(\n\t\t\t\t\t\t\t\t\t\t\t'Create draft page: <mark>%s</mark>'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn createInterpolateElement(\n\t\t\t\t\t\t\t\t\t\tsprintf( format, searchTerm ),\n\t\t\t\t\t\t\t\t\t\t{ mark: <mark /> }\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\tnoDirectEntry={ !! type }\n\t\t\t\t\t\t\t\tnoURLSuggestion={ !! type }\n\t\t\t\t\t\t\t\tsuggestionsQuery={ getSuggestionsQuery(\n\t\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\t\tkind\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonChange={ ( updatedValue ) =>\n\t\t\t\t\t\t\t\t\tupdateNavigationLinkBlockAttributes(\n\t\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\t\tattributes\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\tonRemove={ removeLink }\n\t\t\t\t\t\t\t\trenderControlBottom={\n\t\t\t\t\t\t\t\t\t! url\n\t\t\t\t\t\t\t\t\t\t? () => (\n\t\t\t\t\t\t\t\t\t\t\t\t<LinkControlTransforms\n\t\t\t\t\t\t\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\t\t\t\t\t\t\treplace={ replaceBlock }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover>\n\t\t\t\t\t) }\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</Fragment>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst postContent = (\n\t<SVG xmlns=\"https://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 20h16v-1.5H4V20zm0-4.8h16v-1.5H4v1.5zm0-6.4v1.5h16V8.8H4zM16 4H4v1.5h12V4z\" />\n\t</SVG>\n);\n\nexport default postContent;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst page = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M7 5.5h10a.5.5 0 01.5.5v12a.5.5 0 01-.5.5H7a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM17 4H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V6a2 2 0 00-2-2zm-1 3.75H8v1.5h8v-1.5zM8 11h8v1.5H8V11zm6 3.25H8v1.5h6v-1.5z\" />\n\t</SVG>\n);\n\nexport default page;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst tag = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M20.1 11.2l-6.7-6.7c-.1-.1-.3-.2-.5-.2H5c-.4-.1-.8.3-.8.7v7.8c0 .2.1.4.2.5l6.7 6.7c.2.2.5.4.7.5s.6.2.9.2c.3 0 .6-.1.9-.2.3-.1.5-.3.8-.5l5.6-5.6c.4-.4.7-1 .7-1.6.1-.6-.2-1.2-.6-1.6zM19 13.4L13.4 19c-.1.1-.2.1-.3.2-.2.1-.4.1-.6 0-.1 0-.2-.1-.3-.2l-6.5-6.5V5.8h6.8l6.5 6.5c.2.2.2.4.2.6 0 .1 0 .3-.2.5zM9 8c-.6 0-1 .4-1 1s.4 1 1 1 1-.4 1-1-.4-1-1-1z\" />\n\t</SVG>\n);\n\nexport default tag;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst customPostType = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4zm.8-4l.7.7 2-2V12h1V9.2l2 2 .7-.7-2-2H12v-1H9.2l2-2-.7-.7-2 2V4h-1v2.8l-2-2-.7.7 2 2H4v1h2.8l-2 2z\" />\n\t</SVG>\n);\n\nexport default customPostType;\n","/**\n * WordPress dependencies\n */\nimport {\n\tcategory,\n\tpage,\n\tpostContent,\n\ttag,\n\tcustomPostType,\n} from '@wordpress/icons';\n\nfunction getIcon( variationName ) {\n\tswitch ( variationName ) {\n\t\tcase 'post':\n\t\t\treturn postContent;\n\t\tcase 'page':\n\t\t\treturn page;\n\t\tcase 'tag':\n\t\t\treturn tag;\n\t\tcase 'category':\n\t\t\treturn category;\n\t\tdefault:\n\t\t\treturn customPostType;\n\t}\n}\n\nexport function enhanceNavigationLinkVariations( settings, name ) {\n\tif ( name !== 'core/navigation-link' ) {\n\t\treturn settings;\n\t}\n\n\t// Otherwise decorate server passed variations with an icon and isActive function.\n\tif ( settings.variations ) {\n\t\tconst isActive = ( blockAttributes, variationAttributes ) => {\n\t\t\treturn blockAttributes.type === variationAttributes.type;\n\t\t};\n\t\tconst variations = settings.variations.map( ( variation ) => {\n\t\t\treturn {\n\t\t\t\t...variation,\n\t\t\t\t...( ! variation.icon && {\n\t\t\t\t\ticon: getIcon( variation.name ),\n\t\t\t\t} ),\n\t\t\t\t...( ! variation.isActive && {\n\t\t\t\t\tisActive,\n\t\t\t\t} ),\n\t\t\t};\n\t\t} );\n\t\treturn {\n\t\t\t...settings,\n\t\t\tvariations,\n\t\t};\n\t}\n\treturn settings;\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/site-logo' ],\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/navigation-link' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/spacer' ],\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/navigation-link' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/home-link' ],\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/navigation-link' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/social-links' ],\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/navigation-link' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/search' ],\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/navigation-link' );\n\t\t\t},\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/navigation-submenu' ],\n\t\t\ttransform: ( attributes, innerBlocks ) =>\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/navigation-submenu',\n\t\t\t\t\tattributes,\n\t\t\t\t\tinnerBlocks\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/spacer' ],\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/spacer' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/site-logo' ],\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/site-logo' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/home-link' ],\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/home-link' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/social-links' ],\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/social-links' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/search' ],\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/search', {\n\t\t\t\t\tshowLabel: false,\n\t\t\t\t\tbuttonUseIcon: true,\n\t\t\t\t\tbuttonPosition: 'button-inside',\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { _x } from '@wordpress/i18n';\nimport { customLink as linkIcon } from '@wordpress/icons';\nimport { InnerBlocks } from '@wordpress/block-editor';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\nimport { enhanceNavigationLinkVariations } from './hooks';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon: linkIcon,\n\n\t__experimentalLabel: ( { label } ) => label,\n\n\tmerge( leftAttributes, { label: rightLabel = '' } ) {\n\t\treturn {\n\t\t\t...leftAttributes,\n\t\t\tlabel: leftAttributes.label + rightLabel,\n\t\t};\n\t},\n\n\tedit,\n\n\tsave,\n\n\texample: {\n\t\tattributes: {\n\t\t\tlabel: _x( 'Example Link', 'navigation link preview example' ),\n\t\t\turl: 'https://example.com',\n\t\t},\n\t},\n\n\tdeprecated: [\n\t\t{\n\t\t\tisEligible( attributes ) {\n\t\t\t\treturn attributes.nofollow;\n\t\t\t},\n\n\t\t\tattributes: {\n\t\t\t\tlabel: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\ttype: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tnofollow: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t},\n\t\t\t\tdescription: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t\tid: {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t},\n\t\t\t\topensInNewTab: {\n\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\tdefault: false,\n\t\t\t\t},\n\t\t\t\turl: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t},\n\t\t\t},\n\n\t\t\tmigrate( { nofollow, ...rest } ) {\n\t\t\t\treturn {\n\t\t\t\t\trel: nofollow ? 'nofollow' : '',\n\t\t\t\t\t...rest,\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tsave() {\n\t\t\t\treturn <InnerBlocks.Content />;\n\t\t\t},\n\t\t},\n\t],\n\ttransforms,\n};\n\nexport const init = () => {\n\taddFilter(\n\t\t'blocks.registerBlockType',\n\t\t'core/navigation-link',\n\t\tenhanceNavigationLinkVariations\n\t);\n\n\treturn initBlock( { name, metadata, settings } );\n};\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function save() {\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst removeSubmenu = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"m13.955 20.748 8-17.5-.91-.416L19.597 6H13.5v1.5h5.411l-1.6 3.5H13.5v1.5h3.126l-1.6 3.5H13.5l.028 1.5h.812l-1.295 2.832.91.416ZM17.675 16l-.686 1.5h4.539L21.5 16h-3.825Zm2.286-5-.686 1.5H21.5V11h-1.54ZM2 12c0 3.58 2.42 5.5 6 5.5h.5V19l3-2.5-3-2.5v2H8c-2.48 0-4.5-1.52-4.5-4S5.52 7.5 8 7.5h3.5V6H8c-3.58 0-6 2.42-6 6Z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default removeSubmenu;\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/components';\n\nexport const ItemSubmenuIcon = () => (\n\t<SVG\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"12\"\n\t\theight=\"12\"\n\t\tviewBox=\"0 0 12 12\"\n\t\tfill=\"none\"\n\t>\n\t\t<Path d=\"M1.50002 4L6.00002 8L10.5 4\" strokeWidth=\"1.5\" />\n\t</SVG>\n);\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { escape, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tPanelBody,\n\tPopover,\n\tTextControl,\n\tTextareaControl,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tRichText,\n\t__experimentalLinkControl as LinkControl,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { isURL, prependHTTP, safeDecodeURI } from '@wordpress/url';\nimport {\n\tFragment,\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport { placeCaretAtHorizontalEdge } from '@wordpress/dom';\nimport { link as linkIcon, removeSubmenu } from '@wordpress/icons';\nimport {\n\tuseResourcePermissions,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\nimport { createBlock } from '@wordpress/blocks';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { ItemSubmenuIcon } from './icons';\nimport { name } from './block.json';\n\nconst ALLOWED_BLOCKS = [ 'core/navigation-link', 'core/navigation-submenu' ];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\n/**\n * A React hook to determine if it's dragging within the target element.\n *\n * @typedef {import('@wordpress/element').RefObject} RefObject\n *\n * @param {RefObject<HTMLElement>} elementRef The target elementRef object.\n *\n * @return {boolean} Is dragging within the target element.\n */\nconst useIsDraggingWithin = ( elementRef ) => {\n\tconst [ isDraggingWithin, setIsDraggingWithin ] = useState( false );\n\n\tuseEffect( () => {\n\t\tconst { ownerDocument } = elementRef.current;\n\n\t\tfunction handleDragStart( event ) {\n\t\t\t// Check the first time when the dragging starts.\n\t\t\thandleDragEnter( event );\n\t\t}\n\n\t\t// Set to false whenever the user cancel the drag event by either releasing the mouse or press Escape.\n\t\tfunction handleDragEnd() {\n\t\t\tsetIsDraggingWithin( false );\n\t\t}\n\n\t\tfunction handleDragEnter( event ) {\n\t\t\t// Check if the current target is inside the item element.\n\t\t\tif ( elementRef.current.contains( event.target ) ) {\n\t\t\t\tsetIsDraggingWithin( true );\n\t\t\t} else {\n\t\t\t\tsetIsDraggingWithin( false );\n\t\t\t}\n\t\t}\n\n\t\t// Bind these events to the document to catch all drag events.\n\t\t// Ideally, we can also use `event.relatedTarget`, but sadly that\n\t\t// doesn't work in Safari.\n\t\townerDocument.addEventListener( 'dragstart', handleDragStart );\n\t\townerDocument.addEventListener( 'dragend', handleDragEnd );\n\t\townerDocument.addEventListener( 'dragenter', handleDragEnter );\n\n\t\treturn () => {\n\t\t\townerDocument.removeEventListener( 'dragstart', handleDragStart );\n\t\t\townerDocument.removeEventListener( 'dragend', handleDragEnd );\n\t\t\townerDocument.removeEventListener( 'dragenter', handleDragEnter );\n\t\t};\n\t}, [] );\n\n\treturn isDraggingWithin;\n};\n\n/**\n * Given the Link block's type attribute, return the query params to give to\n * /wp/v2/search.\n *\n * @param {string} type Link block's type attribute.\n * @param {string} kind Link block's entity of kind (post-type|taxonomy)\n * @return {{ type?: string, subtype?: string }} Search query params.\n */\nfunction getSuggestionsQuery( type, kind ) {\n\tswitch ( type ) {\n\t\tcase 'post':\n\t\tcase 'page':\n\t\t\treturn { type: 'post', subtype: type };\n\t\tcase 'category':\n\t\t\treturn { type: 'term', subtype: 'category' };\n\t\tcase 'tag':\n\t\t\treturn { type: 'term', subtype: 'post_tag' };\n\t\tcase 'post_format':\n\t\t\treturn { type: 'post-format' };\n\t\tdefault:\n\t\t\tif ( kind === 'taxonomy' ) {\n\t\t\t\treturn { type: 'term', subtype: type };\n\t\t\t}\n\t\t\tif ( kind === 'post-type' ) {\n\t\t\t\treturn { type: 'post', subtype: type };\n\t\t\t}\n\t\t\treturn {};\n\t}\n}\n\n/**\n * Determine the colors for a menu.\n *\n * Order of priority is:\n * 1: Overlay custom colors (if submenu)\n * 2: Overlay theme colors (if submenu)\n * 3: Custom colors\n * 4: Theme colors\n * 5: Global styles\n *\n * @param {Object}  context\n * @param {boolean} isSubMenu\n */\nfunction getColors( context, isSubMenu ) {\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t\toverlayTextColor,\n\t\tcustomOverlayTextColor,\n\t\toverlayBackgroundColor,\n\t\tcustomOverlayBackgroundColor,\n\t\tstyle,\n\t} = context;\n\n\tconst colors = {};\n\n\tif ( isSubMenu && !! customOverlayTextColor ) {\n\t\tcolors.customTextColor = customOverlayTextColor;\n\t} else if ( isSubMenu && !! overlayTextColor ) {\n\t\tcolors.textColor = overlayTextColor;\n\t} else if ( !! customTextColor ) {\n\t\tcolors.customTextColor = customTextColor;\n\t} else if ( !! textColor ) {\n\t\tcolors.textColor = textColor;\n\t} else if ( !! style?.color?.text ) {\n\t\tcolors.customTextColor = style.color.text;\n\t}\n\n\tif ( isSubMenu && !! customOverlayBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customOverlayBackgroundColor;\n\t} else if ( isSubMenu && !! overlayBackgroundColor ) {\n\t\tcolors.backgroundColor = overlayBackgroundColor;\n\t} else if ( !! customBackgroundColor ) {\n\t\tcolors.customBackgroundColor = customBackgroundColor;\n\t} else if ( !! backgroundColor ) {\n\t\tcolors.backgroundColor = backgroundColor;\n\t} else if ( !! style?.color?.background ) {\n\t\tcolors.customTextColor = style.color.background;\n\t}\n\n\treturn colors;\n}\n\n/**\n * @typedef {'post-type'|'custom'|'taxonomy'|'post-type-archive'} WPNavigationLinkKind\n */\n\n/**\n * Navigation Link Block Attributes\n *\n * @typedef {Object} WPNavigationLinkBlockAttributes\n *\n * @property {string}               [label]         Link text.\n * @property {WPNavigationLinkKind} [kind]          Kind is used to differentiate between term and post ids to check post draft status.\n * @property {string}               [type]          The type such as post, page, tag, category and other custom types.\n * @property {string}               [rel]           The relationship of the linked URL.\n * @property {number}               [id]            A post or term id.\n * @property {boolean}              [opensInNewTab] Sets link target to _blank when true.\n * @property {string}               [url]           Link href.\n * @property {string}               [title]         Link title attribute.\n */\n\n/**\n * Link Control onChange handler that updates block attributes when a setting is changed.\n *\n * @param {Object}                          updatedValue    New block attributes to update.\n * @param {Function}                        setAttributes   Block attribute update function.\n * @param {WPNavigationLinkBlockAttributes} blockAttributes Current block attributes.\n *\n */\nexport const updateNavigationLinkBlockAttributes = (\n\tupdatedValue = {},\n\tsetAttributes,\n\tblockAttributes = {}\n) => {\n\tconst {\n\t\tlabel: originalLabel = '',\n\t\tkind: originalKind = '',\n\t\ttype: originalType = '',\n\t} = blockAttributes;\n\tconst {\n\t\ttitle = '',\n\t\turl = '',\n\t\topensInNewTab,\n\t\tid,\n\t\tkind: newKind = originalKind,\n\t\ttype: newType = originalType,\n\t} = updatedValue;\n\n\tconst normalizedTitle = title.replace( /http(s?):\\/\\//gi, '' );\n\tconst normalizedURL = url.replace( /http(s?):\\/\\//gi, '' );\n\tconst escapeTitle =\n\t\ttitle !== '' &&\n\t\tnormalizedTitle !== normalizedURL &&\n\t\toriginalLabel !== title;\n\tconst label = escapeTitle\n\t\t? escape( title )\n\t\t: originalLabel || escape( normalizedURL );\n\n\t// In https://github.com/WordPress/gutenberg/pull/24670 we decided to use \"tag\" in favor of \"post_tag\"\n\tconst type = newType === 'post_tag' ? 'tag' : newType.replace( '-', '_' );\n\n\tconst isBuiltInType =\n\t\t[ 'post', 'page', 'tag', 'category' ].indexOf( type ) > -1;\n\n\tconst isCustomLink =\n\t\t( ! newKind && ! isBuiltInType ) || newKind === 'custom';\n\tconst kind = isCustomLink ? 'custom' : newKind;\n\n\tsetAttributes( {\n\t\t// Passed `url` may already be encoded. To prevent double encoding, decodeURI is executed to revert to the original string.\n\t\t...( url && { url: encodeURI( safeDecodeURI( url ) ) } ),\n\t\t...( label && { label } ),\n\t\t...( undefined !== opensInNewTab && { opensInNewTab } ),\n\t\t...( id && Number.isInteger( id ) && { id } ),\n\t\t...( kind && { kind } ),\n\t\t...( type && type !== 'URL' && { type } ),\n\t} );\n};\n\nexport default function NavigationSubmenuEdit( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\tmergeBlocks,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst { label, type, opensInNewTab, url, description, rel, title, kind } =\n\t\tattributes;\n\tconst link = {\n\t\turl,\n\t\topensInNewTab,\n\t};\n\tconst { showSubmenuIcon, maxNestingLevel, openSubmenusOnClick } = context;\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent, replaceBlock } =\n\t\tuseDispatch( blockEditorStore );\n\tconst [ isLinkOpen, setIsLinkOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst listItemRef = useRef( null );\n\tconst isDraggingWithin = useIsDraggingWithin( listItemRef );\n\tconst itemLabelPlaceholder = __( 'Add text…' );\n\tconst ref = useRef();\n\n\tconst pagesPermissions = useResourcePermissions( 'pages' );\n\tconst postsPermissions = useResourcePermissions( 'posts' );\n\n\tconst {\n\t\tisAtMaxNesting,\n\t\tisTopLevelItem,\n\t\tisParentOfSelectedBlock,\n\t\tisImmediateParentOfSelectedBlock,\n\t\thasChildren,\n\t\tselectedBlockHasChildren,\n\t\tonlyDescendantIsEmptyLink,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockParentsByBlockName,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tlet _onlyDescendantIsEmptyLink;\n\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\tconst selectedBlockChildren = getBlockOrder( selectedBlockId );\n\n\t\t\t// Check for a single descendant in the submenu. If that block\n\t\t\t// is a link block in a \"placeholder\" state with no label then\n\t\t\t// we can consider as an \"empty\" link.\n\t\t\tif ( selectedBlockChildren?.length === 1 ) {\n\t\t\t\tconst singleBlock = getBlock( selectedBlockChildren[ 0 ] );\n\n\t\t\t\t_onlyDescendantIsEmptyLink =\n\t\t\t\t\tsingleBlock?.name === 'core/navigation-link' &&\n\t\t\t\t\t! singleBlock?.attributes?.label;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisAtMaxNesting:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, name ).length >=\n\t\t\t\t\tmaxNestingLevel,\n\t\t\t\tisTopLevelItem:\n\t\t\t\t\tgetBlockParentsByBlockName( clientId, name ).length === 0,\n\t\t\t\tisParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\ttrue\n\t\t\t\t),\n\t\t\t\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\thasChildren: !! getBlockCount( clientId ),\n\t\t\t\tselectedBlockHasChildren: !! selectedBlockChildren?.length,\n\t\t\t\tonlyDescendantIsEmptyLink: _onlyDescendantIsEmptyLink,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Show the LinkControl on mount if the URL is empty\n\t// ( When adding a new menu item)\n\t// This can't be done in the useState call because it conflicts\n\t// with the autofocus behavior of the BlockListBlock component.\n\tuseEffect( () => {\n\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}, [] );\n\n\t// Store the colors from context as attributes for rendering.\n\tuseEffect( () => {\n\t\t// This side-effect should not create an undo level as those should\n\t\t// only be created via user interactions. Mark this change as\n\t\t// not persistent to avoid undo level creation.\n\t\t// See https://github.com/WordPress/gutenberg/issues/34564.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetAttributes( { isTopLevelItem } );\n\t}, [ isTopLevelItem ] );\n\n\t/**\n\t * The hook shouldn't be necessary but due to a focus loss happening\n\t * when selecting a suggestion in the link popover, we force close on block unselection.\n\t */\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsLinkOpen( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// If the LinkControl popover is open and the URL has changed, close the LinkControl and focus the label text.\n\tuseEffect( () => {\n\t\tif ( isLinkOpen && url ) {\n\t\t\t// Does this look like a URL and have something TLD-ish?\n\t\t\tif (\n\t\t\t\tisURL( prependHTTP( label ) ) &&\n\t\t\t\t/^.+\\.[a-z]+/.test( label )\n\t\t\t) {\n\t\t\t\t// Focus and select the label text.\n\t\t\t\tselectLabelText();\n\t\t\t} else {\n\t\t\t\t// Focus it (but do not select).\n\t\t\t\tplaceCaretAtHorizontalEdge( ref.current, true );\n\t\t\t}\n\t\t}\n\t}, [ url ] );\n\n\t/**\n\t * Focus the Link label text and select it.\n\t */\n\tfunction selectLabelText() {\n\t\tref.current.focus();\n\t\tconst { ownerDocument } = ref.current;\n\t\tconst { defaultView } = ownerDocument;\n\t\tconst selection = defaultView.getSelection();\n\t\tconst range = ownerDocument.createRange();\n\t\t// Get the range of the current ref contents so we can add this range to the selection.\n\t\trange.selectNodeContents( ref.current );\n\t\tselection.removeAllRanges();\n\t\tselection.addRange( range );\n\t}\n\n\tlet userCanCreate = false;\n\tif ( ! type || type === 'page' ) {\n\t\tuserCanCreate = pagesPermissions.canCreate;\n\t} else if ( type === 'post' ) {\n\t\tuserCanCreate = postsPermissions.canCreate;\n\t}\n\n\tasync function handleCreate( pageTitle ) {\n\t\tconst postType = type || 'page';\n\n\t\tconst page = await saveEntityRecord( 'postType', postType, {\n\t\t\ttitle: pageTitle,\n\t\t\tstatus: 'draft',\n\t\t} );\n\n\t\treturn {\n\t\t\tid: page.id,\n\t\t\ttype: postType,\n\t\t\ttitle: page.title.rendered,\n\t\t\turl: page.link,\n\t\t\tkind: 'post-type',\n\t\t};\n\t}\n\n\tconst {\n\t\ttextColor,\n\t\tcustomTextColor,\n\t\tbackgroundColor,\n\t\tcustomBackgroundColor,\n\t} = getColors( context, ! isTopLevelItem );\n\n\tfunction onKeyDown( event ) {\n\t\tif ( isKeyboardEvent.primary( event, 'k' ) ) {\n\t\t\tsetIsLinkOpen( true );\n\t\t}\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, listItemRef ] ),\n\t\tclassName: classnames( 'wp-block-navigation-item', {\n\t\t\t'is-editing': isSelected || isParentOfSelectedBlock,\n\t\t\t'is-dragging-within': isDraggingWithin,\n\t\t\t'has-link': !! url,\n\t\t\t'has-child': hasChildren,\n\t\t\t'has-text-color': !! textColor || !! customTextColor,\n\t\t\t[ getColorClassName( 'color', textColor ) ]: !! textColor,\n\t\t\t'has-background': !! backgroundColor || customBackgroundColor,\n\t\t\t[ getColorClassName( 'background-color', backgroundColor ) ]:\n\t\t\t\t!! backgroundColor,\n\t\t\t'open-on-click': openSubmenusOnClick,\n\t\t} ),\n\t\tstyle: {\n\t\t\tcolor: ! textColor && customTextColor,\n\t\t\tbackgroundColor: ! backgroundColor && customBackgroundColor,\n\t\t},\n\t\tonKeyDown,\n\t} );\n\n\t// Always use overlay colors for submenus.\n\tconst innerBlocksColors = getColors( context, true );\n\n\tconst allowedBlocks = isAtMaxNesting\n\t\t? without( ALLOWED_BLOCKS, 'core/navigation-submenu' )\n\t\t: ALLOWED_BLOCKS;\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: classnames( 'wp-block-navigation__submenu-container', {\n\t\t\t\t'is-parent-of-selected-block': isParentOfSelectedBlock,\n\t\t\t\t'has-text-color': !! (\n\t\t\t\t\tinnerBlocksColors.textColor ||\n\t\t\t\t\tinnerBlocksColors.customTextColor\n\t\t\t\t),\n\t\t\t\t[ `has-${ innerBlocksColors.textColor }-color` ]:\n\t\t\t\t\t!! innerBlocksColors.textColor,\n\t\t\t\t'has-background': !! (\n\t\t\t\t\tinnerBlocksColors.backgroundColor ||\n\t\t\t\t\tinnerBlocksColors.customBackgroundColor\n\t\t\t\t),\n\t\t\t\t[ `has-${ innerBlocksColors.backgroundColor }-background-color` ]:\n\t\t\t\t\t!! innerBlocksColors.backgroundColor,\n\t\t\t} ),\n\t\t\tstyle: {\n\t\t\t\tcolor: innerBlocksColors.customTextColor,\n\t\t\t\tbackgroundColor: innerBlocksColors.customBackgroundColor,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tallowedBlocks,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: true,\n\n\t\t\t// Ensure block toolbar is not too far removed from item\n\t\t\t// being edited.\n\t\t\t// see: https://github.com/WordPress/gutenberg/pull/34615.\n\t\t\t__experimentalCaptureToolbars: true,\n\n\t\t\trenderAppender:\n\t\t\t\tisSelected ||\n\t\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\t\thasChildren\n\t\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t\t: false,\n\t\t}\n\t);\n\n\tconst ParentElement = openSubmenusOnClick ? 'button' : 'a';\n\n\tfunction transformToLink() {\n\t\tconst newLinkBlock = createBlock( 'core/navigation-link', attributes );\n\t\treplaceBlock( clientId, newLinkBlock );\n\t}\n\n\tconst canConvertToLink =\n\t\t! selectedBlockHasChildren || onlyDescendantIsEmptyLink;\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t{ ! openSubmenusOnClick && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\t\tonClick={ () => setIsLinkOpen( true ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"revert\"\n\t\t\t\t\t\ticon={ removeSubmenu }\n\t\t\t\t\t\ttitle={ __( 'Convert to Link' ) }\n\t\t\t\t\t\tonClick={ transformToLink }\n\t\t\t\t\t\tclassName=\"wp-block-navigation__submenu__revert\"\n\t\t\t\t\t\tisDisabled={ ! canConvertToLink }\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<TextareaControl\n\t\t\t\t\t\tvalue={ description || '' }\n\t\t\t\t\t\tonChange={ ( descriptionValue ) => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdescription: descriptionValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Description' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'The description will be displayed in the menu if the current theme supports it.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tvalue={ title || '' }\n\t\t\t\t\t\tonChange={ ( titleValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { title: titleValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Link title' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\tonChange={ ( relValue ) => {\n\t\t\t\t\t\t\tsetAttributes( { rel: relValue } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ /* eslint-disable jsx-a11y/anchor-is-valid */ }\n\t\t\t\t<ParentElement className=\"wp-block-navigation-item__content\">\n\t\t\t\t\t{ /* eslint-enable */ }\n\t\t\t\t\t{\n\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\tidentifier=\"label\"\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__label\"\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\tonChange={ ( labelValue ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { label: labelValue } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\t\t\taria-label={ __( 'Navigation link text' ) }\n\t\t\t\t\t\t\tplaceholder={ itemLabelPlaceholder }\n\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\tallowedFormats={ [\n\t\t\t\t\t\t\t\t'core/bold',\n\t\t\t\t\t\t\t\t'core/italic',\n\t\t\t\t\t\t\t\t'core/image',\n\t\t\t\t\t\t\t\t'core/strikethrough',\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tif ( ! openSubmenusOnClick && ! url ) {\n\t\t\t\t\t\t\t\t\tsetIsLinkOpen( true );\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\t{ ! openSubmenusOnClick && isLinkOpen && (\n\t\t\t\t\t\t<Popover\n\t\t\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\t\t\tonClose={ () => setIsLinkOpen( false ) }\n\t\t\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\t\t\tshift\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-link__inline-link-input\"\n\t\t\t\t\t\t\t\tvalue={ link }\n\t\t\t\t\t\t\t\tshowInitialSuggestions={ true }\n\t\t\t\t\t\t\t\twithCreateSuggestion={ userCanCreate }\n\t\t\t\t\t\t\t\tcreateSuggestion={ handleCreate }\n\t\t\t\t\t\t\t\tcreateSuggestionButtonText={ ( searchTerm ) => {\n\t\t\t\t\t\t\t\t\tlet format;\n\t\t\t\t\t\t\t\t\tif ( type === 'post' ) {\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\t\t\t\t\tformat = __(\n\t\t\t\t\t\t\t\t\t\t\t'Create draft post: <mark>%s</mark>'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t\t\t\t\t\t\tformat = __(\n\t\t\t\t\t\t\t\t\t\t\t'Create draft page: <mark>%s</mark>'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn createInterpolateElement(\n\t\t\t\t\t\t\t\t\t\tsprintf( format, searchTerm ),\n\t\t\t\t\t\t\t\t\t\t{ mark: <mark /> }\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\tnoDirectEntry={ !! type }\n\t\t\t\t\t\t\t\tnoURLSuggestion={ !! type }\n\t\t\t\t\t\t\t\tsuggestionsQuery={ getSuggestionsQuery(\n\t\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\t\tkind\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonChange={ ( updatedValue ) =>\n\t\t\t\t\t\t\t\t\tupdateNavigationLinkBlockAttributes(\n\t\t\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\t\t\t\t\tattributes\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\tonRemove={ () => {\n\t\t\t\t\t\t\t\t\tsetAttributes( { url: '' } );\n\t\t\t\t\t\t\t\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover>\n\t\t\t\t\t) }\n\t\t\t\t</ParentElement>\n\t\t\t\t{ ( showSubmenuIcon || openSubmenusOnClick ) && (\n\t\t\t\t\t<span className=\"wp-block-navigation__submenu-icon\">\n\t\t\t\t\t\t<ItemSubmenuIcon />\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t</div>\n\t\t</Fragment>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/navigation-link' ],\n\t\t\tisMatch: ( attributes, block ) => block?.innerBlocks?.length === 0,\n\t\t\ttransform: ( attributes ) =>\n\t\t\t\tcreateBlock( 'core/navigation-link', attributes ),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/spacer' ],\n\t\t\tisMatch: ( attributes, block ) => block?.innerBlocks?.length === 0,\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/spacer' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/site-logo' ],\n\t\t\tisMatch: ( attributes, block ) => block?.innerBlocks?.length === 0,\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/site-logo' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/home-link' ],\n\t\t\tisMatch: ( attributes, block ) => block?.innerBlocks?.length === 0,\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/home-link' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/social-links' ],\n\t\t\tisMatch: ( attributes, block ) => block?.innerBlocks?.length === 0,\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/social-links' );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/search' ],\n\t\t\tisMatch: ( attributes, block ) => block?.innerBlocks?.length === 0,\n\t\t\ttransform: () => {\n\t\t\t\treturn createBlock( 'core/search' );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { addSubmenu } 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 save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon: addSubmenu,\n\n\t__experimentalLabel: ( { label } ) => label,\n\n\tedit,\n\n\tsave,\n\n\ttransforms,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function save() {\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst pageBreak = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M7.8 6c0-.7.6-1.2 1.2-1.2h6c.7 0 1.2.6 1.2 1.2v3h1.5V6c0-1.5-1.2-2.8-2.8-2.8H9C7.5 3.2 6.2 4.5 6.2 6v3h1.5V6zm8.4 11c0 .7-.6 1.2-1.2 1.2H9c-.7 0-1.2-.6-1.2-1.2v-3H6.2v3c0 1.5 1.2 2.8 2.8 2.8h6c1.5 0 2.8-1.2 2.8-2.8v-3h-1.5v3zM4 11v1h16v-1H4z\" />\n\t</SVG>\n);\n\nexport default pageBreak;\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tschema: {\n\t\t\t\t'wp-block': { attributes: [ 'data-block' ] },\n\t\t\t},\n\t\t\tisMatch: ( node ) =>\n\t\t\t\tnode.dataset && node.dataset.block === 'core/nextpage',\n\t\t\ttransform() {\n\t\t\t\treturn createBlock( 'core/nextpage', {} );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { pageBreak 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\ttransforms,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useBlockProps } from '@wordpress/block-editor';\n\nexport default function NextPageEdit() {\n\treturn (\n\t\t<div { ...useBlockProps() }>\n\t\t\t<span>{ __( 'Page break' ) }</span>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { RawHTML } from '@wordpress/element';\n\nexport default function save() {\n\treturn <RawHTML>{ '<!--nextpage-->' }</RawHTML>;\n}\n","/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport PatternEdit from './edit';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\tedit: PatternEdit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\nimport {\n\tstore as blockEditorStore,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\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 { replaceBlocks, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\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__unstableMarkNextChangeAsNotPersistent();\n\t\t\treplaceBlocks( clientId, selectedPattern.blocks );\n\t\t}\n\t}, [ selectedPattern?.blocks ] );\n\n\tconst props = useBlockProps();\n\n\treturn <div { ...props } />;\n};\n\nexport default PatternEdit;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst pages = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M7 13.8h6v-1.5H7v1.5zM18 16V4c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2zM5.5 16V4c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5zM7 10.5h8V9H7v1.5zm0-3.3h8V5.8H7v1.4zM20.2 6v13c0 .7-.6 1.2-1.2 1.2H8v1.5h11c1.5 0 2.7-1.2 2.7-2.8V6h-1.5z\" />\n\t</SVG>\n);\n\nexport default pages;\n","/**\n * WordPress dependencies\n */\nimport { Button, Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch } from '@wordpress/data';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { createBlock as create } from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\nconst PAGE_FIELDS = [ 'id', 'title', 'link', 'type', 'parent' ];\nconst MAX_PAGE_COUNT = 100;\n\nexport const convertSelectedBlockToNavigationLinks =\n\t( { pages, clientId, replaceBlock, createBlock } ) =>\n\t() => {\n\t\tif ( ! pages ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst linkMap = {};\n\t\tconst navigationLinks = [];\n\t\tpages.forEach( ( { id, title, link: url, type, parent } ) => {\n\t\t\t// See if a placeholder exists. This is created if children appear before parents in list.\n\t\t\tconst innerBlocks = linkMap[ id ]?.innerBlocks ?? [];\n\t\t\tlinkMap[ id ] = createBlock(\n\t\t\t\t'core/navigation-link',\n\t\t\t\t{\n\t\t\t\t\tid,\n\t\t\t\t\tlabel: title.rendered,\n\t\t\t\t\turl,\n\t\t\t\t\ttype,\n\t\t\t\t\tkind: 'post-type',\n\t\t\t\t},\n\t\t\t\tinnerBlocks\n\t\t\t);\n\n\t\t\tif ( ! parent ) {\n\t\t\t\tnavigationLinks.push( linkMap[ id ] );\n\t\t\t} else {\n\t\t\t\tif ( ! linkMap[ parent ] ) {\n\t\t\t\t\t// Use a placeholder if the child appears before parent in list.\n\t\t\t\t\tlinkMap[ parent ] = { innerBlocks: [] };\n\t\t\t\t}\n\t\t\t\tconst parentLinkInnerBlocks = linkMap[ parent ].innerBlocks;\n\t\t\t\tparentLinkInnerBlocks.push( linkMap[ id ] );\n\t\t\t}\n\t\t} );\n\n\t\t// Transform all links with innerBlocks into Submenus. This can't be done\n\t\t// sooner because page objects have no information on their children.\n\n\t\tconst transformSubmenus = ( listOfLinks ) => {\n\t\t\tlistOfLinks.forEach( ( block, index, listOfLinksArray ) => {\n\t\t\t\tconst { attributes, innerBlocks } = block;\n\t\t\t\tif ( innerBlocks.length !== 0 ) {\n\t\t\t\t\ttransformSubmenus( innerBlocks );\n\t\t\t\t\tconst transformedBlock = createBlock(\n\t\t\t\t\t\t'core/navigation-submenu',\n\t\t\t\t\t\tattributes,\n\t\t\t\t\t\tinnerBlocks\n\t\t\t\t\t);\n\t\t\t\t\tlistOfLinksArray[ index ] = transformedBlock;\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\n\t\ttransformSubmenus( navigationLinks );\n\n\t\treplaceBlock( clientId, navigationLinks );\n\t};\n\nexport default function ConvertToLinksModal( { onClose, clientId } ) {\n\tconst { records: pages, hasResolved: pagesFinished } = useEntityRecords(\n\t\t'postType',\n\t\t'page',\n\t\t{\n\t\t\tper_page: MAX_PAGE_COUNT,\n\t\t\t_fields: PAGE_FIELDS,\n\t\t\t// TODO: When https://core.trac.wordpress.org/ticket/39037 REST API support for multiple orderby\n\t\t\t// values is resolved, update 'orderby' to [ 'menu_order', 'post_title' ] to provide a consistent\n\t\t\t// sort.\n\t\t\torderby: 'menu_order',\n\t\t\torder: 'asc',\n\t\t}\n\t);\n\n\tconst { replaceBlock } = useDispatch( blockEditorStore );\n\n\treturn (\n\t\t<Modal\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t\ttitle={ __( 'Convert to links' ) }\n\t\t\tclassName={ 'wp-block-page-list-modal' }\n\t\t\taria={ { describedby: 'wp-block-page-list-modal__description' } }\n\t\t>\n\t\t\t<p id={ 'wp-block-page-list-modal__description' }>\n\t\t\t\t{ __(\n\t\t\t\t\t'To edit this navigation menu, convert it to single page links. This allows you to add, re-order, remove items, or edit their labels.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t\"Note: if you add new pages to your site, you'll need to add them to your navigation menu.\"\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<div className=\"wp-block-page-list-modal-buttons\">\n\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdisabled={ ! pagesFinished }\n\t\t\t\t\tonClick={ convertSelectedBlockToNavigationLinks( {\n\t\t\t\t\t\tpages,\n\t\t\t\t\t\treplaceBlock,\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tcreateBlock: create,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Convert' ) }\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t</Modal>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/components';\n\nexport const ItemSubmenuIcon = () => (\n\t<SVG\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"12\"\n\t\theight=\"12\"\n\t\tviewBox=\"0 0 12 12\"\n\t\tfill=\"none\"\n\t>\n\t\t<Path d=\"M1.50002 4L6.00002 8L10.5 4\" strokeWidth=\"1.5\" />\n\t</SVG>\n);\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tuseBlockProps,\n\tgetColorClassName,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, Spinner, Notice } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState, memo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore, useEntityRecords } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport ConvertToLinksModal from './convert-to-links-modal';\nimport { ItemSubmenuIcon } from '../navigation-link/icons';\n\n// We only show the edit option when page count is <= MAX_PAGE_COUNT\n// Performance of Navigation Links is not good past this value.\nconst MAX_PAGE_COUNT = 100;\n\nexport default function PageListEdit( { context, clientId } ) {\n\tconst { pagesByParentId, totalPages, hasResolvedPages } = usePageData();\n\n\tconst isNavigationChild = 'showSubmenuIcon' in context;\n\tconst allowConvertToLinks =\n\t\tisNavigationChild && totalPages <= MAX_PAGE_COUNT;\n\n\tconst [ isOpen, setOpen ] = useState( false );\n\tconst openModal = () => setOpen( true );\n\tconst closeModal = () => setOpen( false );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( 'wp-block-page-list', {\n\t\t\t'has-text-color': !! context.textColor,\n\t\t\t[ getColorClassName( 'color', context.textColor ) ]:\n\t\t\t\t!! context.textColor,\n\t\t\t'has-background': !! context.backgroundColor,\n\t\t\t[ getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tcontext.backgroundColor\n\t\t\t) ]: !! context.backgroundColor,\n\t\t} ),\n\t\tstyle: { ...context.style?.color },\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t{ allowConvertToLinks && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<ToolbarButton title={ __( 'Edit' ) } onClick={ openModal }>\n\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ allowConvertToLinks && isOpen && (\n\t\t\t\t<ConvertToLinksModal\n\t\t\t\t\tonClose={ closeModal }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! hasResolvedPages && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Spinner />\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ hasResolvedPages && totalPages === null && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Notice status={ 'warning' } isDismissible={ false }>\n\t\t\t\t\t\t{ __( 'Page List: Cannot retrieve Pages.' ) }\n\t\t\t\t\t</Notice>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ totalPages === 0 && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Notice status={ 'info' } isDismissible={ false }>\n\t\t\t\t\t\t{ __( 'Page List: Cannot retrieve Pages.' ) }\n\t\t\t\t\t</Notice>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ totalPages > 0 && (\n\t\t\t\t<ul { ...blockProps }>\n\t\t\t\t\t<PageItems\n\t\t\t\t\t\tcontext={ context }\n\t\t\t\t\t\tpagesByParentId={ pagesByParentId }\n\t\t\t\t\t/>\n\t\t\t\t</ul>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useFrontPageId() {\n\treturn useSelect( ( select ) => {\n\t\tconst canReadSettings = select( coreStore ).canUser(\n\t\t\t'read',\n\t\t\t'settings'\n\t\t);\n\t\tif ( ! canReadSettings ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst site = select( coreStore ).getEntityRecord( 'root', 'site' );\n\t\treturn site?.show_on_front === 'page' && site?.page_on_front;\n\t}, [] );\n}\n\nfunction usePageData() {\n\tconst { records: pages, hasResolved: hasResolvedPages } = useEntityRecords(\n\t\t'postType',\n\t\t'page',\n\t\t{\n\t\t\torderby: 'menu_order',\n\t\t\torder: 'asc',\n\t\t\t_fields: [ 'id', 'link', 'parent', 'title', 'menu_order' ],\n\t\t\tper_page: -1,\n\t\t\tcontext: 'view',\n\t\t}\n\t);\n\n\treturn useMemo( () => {\n\t\t// TODO: Once the REST API supports passing multiple values to\n\t\t// 'orderby', this can be removed.\n\t\t// https://core.trac.wordpress.org/ticket/39037\n\t\tconst sortedPages = [ ...( pages ?? [] ) ].sort( ( a, b ) => {\n\t\t\tif ( a.menu_order === b.menu_order ) {\n\t\t\t\treturn a.title.rendered.localeCompare( b.title.rendered );\n\t\t\t}\n\t\t\treturn a.menu_order - b.menu_order;\n\t\t} );\n\t\tconst pagesByParentId = sortedPages.reduce( ( accumulator, page ) => {\n\t\t\tconst { parent } = page;\n\t\t\tif ( accumulator.has( parent ) ) {\n\t\t\t\taccumulator.get( parent ).push( page );\n\t\t\t} else {\n\t\t\t\taccumulator.set( parent, [ page ] );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, new Map() );\n\n\t\treturn {\n\t\t\tpagesByParentId,\n\t\t\thasResolvedPages,\n\t\t\ttotalPages: pages?.length ?? null,\n\t\t};\n\t}, [ pages, hasResolvedPages ] );\n}\n\nconst PageItems = memo( function PageItems( {\n\tcontext,\n\tpagesByParentId,\n\tparentId = 0,\n\tdepth = 0,\n} ) {\n\tconst pages = pagesByParentId.get( parentId );\n\tconst frontPageId = useFrontPageId();\n\n\tif ( ! pages?.length ) {\n\t\treturn [];\n\t}\n\n\treturn pages.map( ( page ) => {\n\t\tconst hasChildren = pagesByParentId.has( page.id );\n\t\tconst isNavigationChild = 'showSubmenuIcon' in context;\n\t\treturn (\n\t\t\t<li\n\t\t\t\tkey={ page.id }\n\t\t\t\tclassName={ classnames( 'wp-block-pages-list__item', {\n\t\t\t\t\t'has-child': hasChildren,\n\t\t\t\t\t'wp-block-navigation-item': isNavigationChild,\n\t\t\t\t\t'open-on-click': context.openSubmenusOnClick,\n\t\t\t\t\t'open-on-hover-click':\n\t\t\t\t\t\t! context.openSubmenusOnClick &&\n\t\t\t\t\t\tcontext.showSubmenuIcon,\n\t\t\t\t\t'menu-item-home': page.id === frontPageId,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ hasChildren && context.openSubmenusOnClick ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__content wp-block-navigation-submenu__toggle\"\n\t\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ page.title?.rendered }\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<span className=\"wp-block-page-list__submenu-icon wp-block-navigation__submenu-icon\">\n\t\t\t\t\t\t\t<ItemSubmenuIcon />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<a\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t'wp-block-pages-list__item__link',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'wp-block-navigation-item__content':\n\t\t\t\t\t\t\t\t\tisNavigationChild,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t\thref={ page.link }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ page.title?.rendered }\n\t\t\t\t\t</a>\n\t\t\t\t) }\n\t\t\t\t{ hasChildren && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ! context.openSubmenusOnClick &&\n\t\t\t\t\t\t\tcontext.showSubmenuIcon && (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclassName=\"wp-block-navigation-item__content wp-block-navigation-submenu__toggle wp-block-page-list__submenu-icon wp-block-navigation__submenu-icon\"\n\t\t\t\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ItemSubmenuIcon />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\tclassName={ classnames( 'submenu-container', {\n\t\t\t\t\t\t\t\t'wp-block-navigation__submenu-container':\n\t\t\t\t\t\t\t\t\tisNavigationChild,\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PageItems\n\t\t\t\t\t\t\t\tcontext={ context }\n\t\t\t\t\t\t\t\tpagesByParentId={ pagesByParentId }\n\t\t\t\t\t\t\t\tparentId={ page.id }\n\t\t\t\t\t\t\t\tdepth={ depth + 1 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</li>\n\t\t);\n\t} );\n} );\n","/**\n * WordPress dependencies\n */\nimport { pages 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.js';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {},\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst paragraph = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18.3 4H9.9v-.1l-.9.2c-2.3.4-4 2.4-4 4.8s1.7 4.4 4 4.8l.7.1V20h1.5V5.5h2.9V20h1.5V5.5h2.7V4z\" />\n\t</SVG>\n);\n\nexport default paragraph;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { RawHTML } from '@wordpress/element';\nimport {\n\tgetColorClassName,\n\tgetFontSizeClass,\n\tRichText,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\nimport { isRTL } from '@wordpress/i18n';\n\nconst supports = {\n\tclassName: false,\n};\n\nconst blockAttributes = {\n\talign: {\n\t\ttype: 'string',\n\t},\n\tcontent: {\n\t\ttype: 'string',\n\t\tsource: 'html',\n\t\tselector: 'p',\n\t\tdefault: '',\n\t},\n\tdropCap: {\n\t\ttype: 'boolean',\n\t\tdefault: false,\n\t},\n\tplaceholder: {\n\t\ttype: 'string',\n\t},\n\ttextColor: {\n\t\ttype: 'string',\n\t},\n\tbackgroundColor: {\n\t\ttype: 'string',\n\t},\n\tfontSize: {\n\t\ttype: 'string',\n\t},\n\tdirection: {\n\t\ttype: 'string',\n\t\tenum: [ 'ltr', 'rtl' ],\n\t},\n\tstyle: {\n\t\ttype: 'object',\n\t},\n};\n\nconst migrateCustomColorsAndFontSizes = ( attributes ) => {\n\tif (\n\t\t! attributes.customTextColor &&\n\t\t! attributes.customBackgroundColor &&\n\t\t! attributes.customFontSize\n\t) {\n\t\treturn attributes;\n\t}\n\tconst style = {};\n\tif ( attributes.customTextColor || attributes.customBackgroundColor ) {\n\t\tstyle.color = {};\n\t}\n\tif ( attributes.customTextColor ) {\n\t\tstyle.color.text = attributes.customTextColor;\n\t}\n\tif ( attributes.customBackgroundColor ) {\n\t\tstyle.color.background = attributes.customBackgroundColor;\n\t}\n\tif ( attributes.customFontSize ) {\n\t\tstyle.typography = { fontSize: attributes.customFontSize };\n\t}\n\n\tconst {\n\t\tcustomTextColor,\n\t\tcustomBackgroundColor,\n\t\tcustomFontSize,\n\t\t...restAttributes\n\t} = attributes;\n\n\treturn {\n\t\t...restAttributes,\n\t\tstyle,\n\t};\n};\n\nconst { style, ...restBlockAttributes } = blockAttributes;\n\nconst deprecated = [\n\t// Version without drop cap on aligned text.\n\t{\n\t\tsupports,\n\t\tattributes: {\n\t\t\t...restBlockAttributes,\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomFontSize: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst { align, content, dropCap, direction } = attributes;\n\t\t\tconst className = classnames( {\n\t\t\t\t'has-drop-cap':\n\t\t\t\t\talign === ( isRTL() ? 'left' : 'right' ) ||\n\t\t\t\t\talign === 'center'\n\t\t\t\t\t\t? false\n\t\t\t\t\t\t: dropCap,\n\t\t\t\t[ `has-text-align-${ align }` ]: align,\n\t\t\t} );\n\n\t\t\treturn (\n\t\t\t\t<p { ...useBlockProps.save( { className, dir: direction } ) }>\n\t\t\t\t\t<RichText.Content value={ content } />\n\t\t\t\t</p>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tsupports,\n\t\tattributes: {\n\t\t\t...restBlockAttributes,\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomFontSize: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t},\n\t\tmigrate: migrateCustomColorsAndFontSizes,\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\talign,\n\t\t\t\tcontent,\n\t\t\t\tdropCap,\n\t\t\t\tbackgroundColor,\n\t\t\t\ttextColor,\n\t\t\t\tcustomBackgroundColor,\n\t\t\t\tcustomTextColor,\n\t\t\t\tfontSize,\n\t\t\t\tcustomFontSize,\n\t\t\t\tdirection,\n\t\t\t} = attributes;\n\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\t\t\tconst fontSizeClass = getFontSizeClass( fontSize );\n\n\t\t\tconst className = classnames( {\n\t\t\t\t'has-text-color': textColor || customTextColor,\n\t\t\t\t'has-background': backgroundColor || customBackgroundColor,\n\t\t\t\t'has-drop-cap': dropCap,\n\t\t\t\t[ `has-text-align-${ align }` ]: align,\n\t\t\t\t[ fontSizeClass ]: fontSizeClass,\n\t\t\t\t[ textClass ]: textClass,\n\t\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t} );\n\n\t\t\tconst styles = {\n\t\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t\t? undefined\n\t\t\t\t\t: customBackgroundColor,\n\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t\tfontSize: fontSizeClass ? undefined : customFontSize,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<RichText.Content\n\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\tstyle={ styles }\n\t\t\t\t\tclassName={ className ? className : undefined }\n\t\t\t\t\tvalue={ content }\n\t\t\t\t\tdir={ direction }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tsupports,\n\t\tattributes: {\n\t\t\t...restBlockAttributes,\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomFontSize: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t},\n\t\tmigrate: migrateCustomColorsAndFontSizes,\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\talign,\n\t\t\t\tcontent,\n\t\t\t\tdropCap,\n\t\t\t\tbackgroundColor,\n\t\t\t\ttextColor,\n\t\t\t\tcustomBackgroundColor,\n\t\t\t\tcustomTextColor,\n\t\t\t\tfontSize,\n\t\t\t\tcustomFontSize,\n\t\t\t\tdirection,\n\t\t\t} = attributes;\n\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\t\t\tconst fontSizeClass = getFontSizeClass( fontSize );\n\n\t\t\tconst className = classnames( {\n\t\t\t\t'has-text-color': textColor || customTextColor,\n\t\t\t\t'has-background': backgroundColor || customBackgroundColor,\n\t\t\t\t'has-drop-cap': dropCap,\n\t\t\t\t[ fontSizeClass ]: fontSizeClass,\n\t\t\t\t[ textClass ]: textClass,\n\t\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t} );\n\n\t\t\tconst styles = {\n\t\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t\t? undefined\n\t\t\t\t\t: customBackgroundColor,\n\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t\tfontSize: fontSizeClass ? undefined : customFontSize,\n\t\t\t\ttextAlign: align,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<RichText.Content\n\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\tstyle={ styles }\n\t\t\t\t\tclassName={ className ? className : undefined }\n\t\t\t\t\tvalue={ content }\n\t\t\t\t\tdir={ direction }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tsupports,\n\t\tattributes: {\n\t\t\t...restBlockAttributes,\n\t\t\tcustomTextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomFontSize: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\twidth: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tmigrate: migrateCustomColorsAndFontSizes,\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\twidth,\n\t\t\t\talign,\n\t\t\t\tcontent,\n\t\t\t\tdropCap,\n\t\t\t\tbackgroundColor,\n\t\t\t\ttextColor,\n\t\t\t\tcustomBackgroundColor,\n\t\t\t\tcustomTextColor,\n\t\t\t\tfontSize,\n\t\t\t\tcustomFontSize,\n\t\t\t} = attributes;\n\n\t\t\tconst textClass = getColorClassName( 'color', textColor );\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\t\t\tconst fontSizeClass = fontSize && `is-${ fontSize }-text`;\n\n\t\t\tconst className = classnames( {\n\t\t\t\t[ `align${ width }` ]: width,\n\t\t\t\t'has-background': backgroundColor || customBackgroundColor,\n\t\t\t\t'has-drop-cap': dropCap,\n\t\t\t\t[ fontSizeClass ]: fontSizeClass,\n\t\t\t\t[ textClass ]: textClass,\n\t\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t} );\n\n\t\t\tconst styles = {\n\t\t\t\tbackgroundColor: backgroundClass\n\t\t\t\t\t? undefined\n\t\t\t\t\t: customBackgroundColor,\n\t\t\t\tcolor: textClass ? undefined : customTextColor,\n\t\t\t\tfontSize: fontSizeClass ? undefined : customFontSize,\n\t\t\t\ttextAlign: align,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<RichText.Content\n\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\tstyle={ styles }\n\t\t\t\t\tclassName={ className ? className : undefined }\n\t\t\t\t\tvalue={ content }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t},\n\t{\n\t\tsupports,\n\t\tattributes: {\n\t\t\t...restBlockAttributes,\n\t\t\tfontSize: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\tconst {\n\t\t\t\twidth,\n\t\t\t\talign,\n\t\t\t\tcontent,\n\t\t\t\tdropCap,\n\t\t\t\tbackgroundColor,\n\t\t\t\ttextColor,\n\t\t\t\tfontSize,\n\t\t\t} = attributes;\n\t\t\tconst className = classnames( {\n\t\t\t\t[ `align${ width }` ]: width,\n\t\t\t\t'has-background': backgroundColor,\n\t\t\t\t'has-drop-cap': dropCap,\n\t\t\t} );\n\t\t\tconst styles = {\n\t\t\t\tbackgroundColor,\n\t\t\t\tcolor: textColor,\n\t\t\t\tfontSize,\n\t\t\t\ttextAlign: align,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<p\n\t\t\t\t\tstyle={ styles }\n\t\t\t\t\tclassName={ className ? className : undefined }\n\t\t\t\t>\n\t\t\t\t\t{ content }\n\t\t\t\t</p>\n\t\t\t);\n\t\t},\n\t\tmigrate( attributes ) {\n\t\t\treturn migrateCustomColorsAndFontSizes( {\n\t\t\t\t...attributes,\n\t\t\t\tcustomFontSize: Number.isFinite( attributes.fontSize )\n\t\t\t\t\t? attributes.fontSize\n\t\t\t\t\t: undefined,\n\t\t\t\tcustomTextColor:\n\t\t\t\t\tattributes.textColor && '#' === attributes.textColor[ 0 ]\n\t\t\t\t\t\t? attributes.textColor\n\t\t\t\t\t\t: undefined,\n\t\t\t\tcustomBackgroundColor:\n\t\t\t\t\tattributes.backgroundColor &&\n\t\t\t\t\t'#' === attributes.backgroundColor[ 0 ]\n\t\t\t\t\t\t? attributes.backgroundColor\n\t\t\t\t\t\t: undefined,\n\t\t\t} );\n\t\t},\n\t},\n\t{\n\t\tsupports,\n\t\tattributes: {\n\t\t\t...blockAttributes,\n\t\t\tcontent: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'html',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\treturn <RawHTML>{ attributes.content }</RawHTML>;\n\t\t},\n\t\tmigrate( attributes ) {\n\t\t\treturn attributes;\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst formatLtr = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t\t<Path d=\"M5.52 2h7.43c.55 0 1 .45 1 1s-.45 1-1 1h-1v13c0 .55-.45 1-1 1s-1-.45-1-1V5c0-.55-.45-1-1-1s-1 .45-1 1v12c0 .55-.45 1-1 1s-1-.45-1-1v-5.96h-.43C3.02 11.04 1 9.02 1 6.52S3.02 2 5.52 2zM14 14l5-4-5-4v8z\" />\n\t</SVG>\n);\n\nexport default formatLtr;\n","/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { ENTER } from '@wordpress/keycodes';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { hasBlockSupport, createBlock } from '@wordpress/blocks';\n\nexport function useOnEnter( props ) {\n\tconst { batch } = useRegistry();\n\tconst {\n\t\tmoveBlocksToPosition,\n\t\treplaceInnerBlocks,\n\t\tduplicateBlocks,\n\t\tinsertBlock,\n\t} = useDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlockRootClientId,\n\t\tgetBlockIndex,\n\t\tgetBlockOrder,\n\t\tgetBlockName,\n\t\tgetBlock,\n\t\tgetNextBlockClientId,\n\t} = useSelect( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( event.keyCode !== ENTER ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { content, clientId } = propsRef.current;\n\n\t\t\t// The paragraph should be empty.\n\t\t\tif ( content.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst wrapperClientId = getBlockRootClientId( clientId );\n\n\t\t\tif (\n\t\t\t\t! hasBlockSupport(\n\t\t\t\t\tgetBlockName( wrapperClientId ),\n\t\t\t\t\t'__experimentalOnEnter',\n\t\t\t\t\tfalse\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst order = getBlockOrder( wrapperClientId );\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconst position = order.indexOf( clientId );\n\n\t\t\t// If it is the last block, exit.\n\t\t\tif ( position === order.length - 1 ) {\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t[ clientId ],\n\t\t\t\t\twrapperClientId,\n\t\t\t\t\tgetBlockRootClientId( wrapperClientId ),\n\t\t\t\t\tgetBlockIndex( wrapperClientId ) + 1\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If it is in the middle, split the block in two.\n\t\t\tconst wrapperBlock = getBlock( wrapperClientId );\n\t\t\tbatch( () => {\n\t\t\t\tduplicateBlocks( [ wrapperClientId ] );\n\t\t\t\tconst blockIndex = getBlockIndex( wrapperClientId );\n\n\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\twrapperClientId,\n\t\t\t\t\twrapperBlock.innerBlocks.slice( 0, position )\n\t\t\t\t);\n\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\tgetNextBlockClientId( wrapperClientId ),\n\t\t\t\t\twrapperBlock.innerBlocks.slice( position + 1 )\n\t\t\t\t);\n\t\t\t\tinsertBlock(\n\t\t\t\t\tcreateBlock( 'core/paragraph' ),\n\t\t\t\t\tblockIndex + 1,\n\t\t\t\t\tgetBlockRootClientId( wrapperClientId ),\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n","/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\t__experimentalUseOnBlockDrop as useOnBlockDrop,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\t__experimentalUseDropZone as useDropZone,\n\tuseReducedMotion,\n} from '@wordpress/compose';\nimport {\n\tPopover,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\n\nconst animateVariants = {\n\thide: { opacity: 0, scaleY: 0.75 },\n\tshow: { opacity: 1, scaleY: 1 },\n\texit: { opacity: 0, scaleY: 0.9 },\n};\n\nexport default function DropZone( { paragraphElement, clientId } ) {\n\tconst { rootClientId, blockIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst selectors = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\trootClientId: selectors.getBlockRootClientId( clientId ),\n\t\t\t\tblockIndex: selectors.getBlockIndex( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst onBlockDrop = useOnBlockDrop( rootClientId, blockIndex, {\n\t\taction: 'replace',\n\t} );\n\tconst [ isDragging, setIsDragging ] = useState( false );\n\tconst [ isVisible, setIsVisible ] = useState( false );\n\tconst popoverRef = useDropZone( {\n\t\tonDragStart: () => {\n\t\t\tsetIsDragging( true );\n\t\t},\n\t\tonDragEnd: () => {\n\t\t\tsetIsDragging( false );\n\t\t},\n\t} );\n\tconst dropZoneRef = useDropZone( {\n\t\tonDrop: onBlockDrop,\n\t\tonDragEnter: () => {\n\t\t\tsetIsVisible( true );\n\t\t},\n\t\tonDragLeave: () => {\n\t\t\tsetIsVisible( false );\n\t\t},\n\t} );\n\tconst reducedMotion = useReducedMotion();\n\n\treturn (\n\t\t<Popover\n\t\t\tanchor={ paragraphElement }\n\t\t\tanimate={ false }\n\t\t\tplacement=\"top-start\"\n\t\t\tfocusOnMount={ false }\n\t\t\tflip={ false }\n\t\t\tresize={ false }\n\t\t\tclassName=\"wp-block-paragraph__drop-zone\"\n\t\t\tref={ popoverRef }\n\t\t>\n\t\t\t{ isDragging ? (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"wp-block-paragraph__drop-zone-backdrop\"\n\t\t\t\t\tref={ dropZoneRef }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: paragraphElement?.offsetWidth,\n\t\t\t\t\t\theight: paragraphElement?.offsetHeight,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t{ isVisible ? (\n\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\tkey=\"drop-zone-foreground\"\n\t\t\t\t\t\t\t\tdata-testid=\"empty-paragraph-drop-zone\"\n\t\t\t\t\t\t\t\tinitial={\n\t\t\t\t\t\t\t\t\treducedMotion\n\t\t\t\t\t\t\t\t\t\t? animateVariants.show\n\t\t\t\t\t\t\t\t\t\t: animateVariants.hide\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tanimate={ animateVariants.show }\n\t\t\t\t\t\t\t\texit={\n\t\t\t\t\t\t\t\t\treducedMotion\n\t\t\t\t\t\t\t\t\t\t? animateVariants.show\n\t\t\t\t\t\t\t\t\t\t: animateVariants.exit\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName=\"wp-block-paragraph__drop-zone-foreground\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null }\n\t\t\t\t\t</AnimatePresence>\n\t\t\t\t</div>\n\t\t\t) : null }\n\t\t</Popover>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { __, _x, isRTL } from '@wordpress/i18n';\nimport {\n\tToolbarButton,\n\tToggleControl,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\tuseSetting,\n} from '@wordpress/block-editor';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { createBlock } from '@wordpress/blocks';\nimport { formatLtr } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { useOnEnter } from './use-enter';\nimport DropZone from './drop-zone';\n\nconst name = 'core/paragraph';\n\nfunction ParagraphRTLControl( { direction, setDirection } ) {\n\treturn (\n\t\tisRTL() && (\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ formatLtr }\n\t\t\t\ttitle={ _x( 'Left to right', 'editor button' ) }\n\t\t\t\tisActive={ direction === 'ltr' }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetDirection( direction === 'ltr' ? undefined : 'ltr' );\n\t\t\t\t} }\n\t\t\t/>\n\t\t)\n\t);\n}\n\nfunction hasDropCapDisabled( align ) {\n\treturn align === ( isRTL() ? 'left' : 'right' ) || align === 'center';\n}\n\nfunction ParagraphBlock( {\n\tattributes,\n\tmergeBlocks,\n\tonReplace,\n\tonRemove,\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst { align, content, direction, dropCap, placeholder } = attributes;\n\tconst isDropCapFeatureEnabled = useSetting( 'typography.dropCap' );\n\tconst [ paragraphElement, setParagraphElement ] = useState( null );\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [\n\t\t\tuseOnEnter( { clientId, content } ),\n\t\t\tsetParagraphElement,\n\t\t] ),\n\t\tclassName: classnames( {\n\t\t\t'has-drop-cap': hasDropCapDisabled( align ) ? false : dropCap,\n\t\t\t[ `has-text-align-${ align }` ]: align,\n\t\t} ),\n\t\tstyle: { direction },\n\t} );\n\n\tlet helpText;\n\tif ( hasDropCapDisabled( align ) ) {\n\t\thelpText = __( 'Not available for aligned text.' );\n\t} else if ( dropCap ) {\n\t\thelpText = __( 'Showing large initial letter.' );\n\t} else {\n\t\thelpText = __( 'Toggle to show a large initial letter.' );\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ align }\n\t\t\t\t\tonChange={ ( newAlign ) =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\talign: newAlign,\n\t\t\t\t\t\t\tdropCap: hasDropCapDisabled( newAlign )\n\t\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t\t: dropCap,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ParagraphRTLControl\n\t\t\t\t\tdirection={ direction }\n\t\t\t\t\tsetDirection={ ( newDirection ) =>\n\t\t\t\t\t\tsetAttributes( { direction: newDirection } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ isDropCapFeatureEnabled && (\n\t\t\t\t<InspectorControls __experimentalGroup=\"typography\">\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\thasValue={ () => !! dropCap }\n\t\t\t\t\t\tlabel={ __( 'Drop cap' ) }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { dropCap: undefined } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresetAllFilter={ () => ( { dropCap: undefined } ) }\n\t\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Drop cap' ) }\n\t\t\t\t\t\t\tchecked={ !! dropCap }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { dropCap: ! dropCap } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thelp={ helpText }\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\thasDropCapDisabled( align ) ? true : false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t{ ! content && (\n\t\t\t\t<DropZone\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tparagraphElement={ paragraphElement }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<RichText\n\t\t\t\tidentifier=\"content\"\n\t\t\t\ttagName=\"p\"\n\t\t\t\t{ ...blockProps }\n\t\t\t\tvalue={ content }\n\t\t\t\tonChange={ ( newContent ) =>\n\t\t\t\t\tsetAttributes( { content: newContent } )\n\t\t\t\t}\n\t\t\t\tonSplit={ ( value, isOriginal ) => {\n\t\t\t\t\tlet newAttributes;\n\n\t\t\t\t\tif ( isOriginal || value ) {\n\t\t\t\t\t\tnewAttributes = {\n\t\t\t\t\t\t\t...attributes,\n\t\t\t\t\t\t\tcontent: value,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tconst block = createBlock( name, newAttributes );\n\n\t\t\t\t\tif ( isOriginal ) {\n\t\t\t\t\t\tblock.clientId = clientId;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn block;\n\t\t\t\t} }\n\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonRemove={ onRemove }\n\t\t\t\taria-label={\n\t\t\t\t\tcontent\n\t\t\t\t\t\t? __( 'Paragraph block' )\n\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t'Empty block; start writing or type forward slash to choose a block'\n\t\t\t\t\t\t  )\n\t\t\t\t}\n\t\t\t\tdata-empty={ content ? false : true }\n\t\t\t\tplaceholder={ placeholder || __( 'Type / to choose a block' ) }\n\t\t\t\tdata-custom-placeholder={ placeholder ? true : undefined }\n\t\t\t\t__unstableEmbedURLOnPaste\n\t\t\t\t__unstableAllowPrefixTransformations\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default ParagraphBlock;\n","/**\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","/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\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\tstyle: {\n\t\t\t\ttypography: {\n\t\t\t\t\tfontSize: 28,\n\t\t\t\t},\n\t\t\t},\n\t\t\tdropCap: true,\n\t\t},\n\t},\n\t__experimentalLabel( attributes, { context } ) {\n\t\tif ( context === 'accessibility' ) {\n\t\t\tconst { content } = attributes;\n\t\t\treturn isEmpty( content ) ? __( '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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\nimport { isRTL } from '@wordpress/i18n';\n\nexport default function save( { attributes } ) {\n\tconst { align, content, dropCap, direction } = attributes;\n\tconst className = classnames( {\n\t\t'has-drop-cap':\n\t\t\talign === ( isRTL() ? 'left' : 'right' ) || align === 'center'\n\t\t\t\t? false\n\t\t\t\t: dropCap,\n\t\t[ `has-text-align-${ align }` ]: align,\n\t} );\n\n\treturn (\n\t\t<p { ...useBlockProps.save( { className, dir: direction } ) }>\n\t\t\t<RichText.Content value={ content } />\n\t\t</p>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst postAuthor = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\td=\"M10 4.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm2.25 7.5v-1A2.75 2.75 0 0011 8.25H7A2.75 2.75 0 004.25 11v1h1.5v-1c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v1h1.5zM4 20h9v-1.5H4V20zm16-4H4v-1.5h16V16z\"\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t</SVG>\n);\n\nexport default postAuthor;\n","/**\n * WordPress dependencies\n */\nimport { postAuthor 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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { PanelBody, SelectControl, ToggleControl } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\nfunction PostAuthorEdit( {\n\tisSelected,\n\tcontext: { postType, postId, queryId },\n\tattributes,\n\tsetAttributes,\n} ) {\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst { authorId, authorDetails, authors } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, getUser, getUsers } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _authorId = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t)?.author;\n\n\t\t\treturn {\n\t\t\t\tauthorId: _authorId,\n\t\t\t\tauthorDetails: _authorId ? getUser( _authorId ) : null,\n\t\t\t\tauthors: getUsers( { who: 'authors' } ),\n\t\t\t};\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tconst { textAlign, showAvatar, showBio, byline, isLink, linkTarget } =\n\t\tattributes;\n\tconst avatarSizes = [];\n\tconst authorName = authorDetails?.name || __( 'Post Author' );\n\tif ( authorDetails ) {\n\t\tObject.keys( authorDetails.avatar_urls ).forEach( ( size ) => {\n\t\t\tavatarSizes.push( {\n\t\t\t\tvalue: size,\n\t\t\t\tlabel: `${ size } x ${ size }`,\n\t\t\t} );\n\t\t} );\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t{ !! postId &&\n\t\t\t\t\t\t! isDescendentOfQueryLoop &&\n\t\t\t\t\t\t!! authors?.length && (\n\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Author' ) }\n\t\t\t\t\t\t\t\tvalue={ authorId }\n\t\t\t\t\t\t\t\toptions={ authors.map( ( { id, name } ) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\t\t\t\t\tlabel: name,\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\tonChange={ ( nextAuthorId ) => {\n\t\t\t\t\t\t\t\t\teditEntityRecord(\n\t\t\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t\t\tpostType,\n\t\t\t\t\t\t\t\t\t\tpostId,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tauthor: nextAuthorId,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Show avatar' ) }\n\t\t\t\t\t\tchecked={ showAvatar }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { showAvatar: ! showAvatar } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t{ showAvatar && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Avatar size' ) }\n\t\t\t\t\t\t\tvalue={ attributes.avatarSize }\n\t\t\t\t\t\t\toptions={ avatarSizes }\n\t\t\t\t\t\t\tonChange={ ( size ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tavatarSize: Number( size ),\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\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Show bio' ) }\n\t\t\t\t\t\tchecked={ showBio }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { showBio: ! showBio } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Link author name to author page' ) }\n\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\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\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ showAvatar && authorDetails && (\n\t\t\t\t\t<div className=\"wp-block-post-author__avatar\">\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\twidth={ attributes.avatarSize }\n\t\t\t\t\t\t\tsrc={\n\t\t\t\t\t\t\t\tauthorDetails.avatar_urls[\n\t\t\t\t\t\t\t\t\tattributes.avatarSize\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\talt={ authorDetails.name }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<div className=\"wp-block-post-author__content\">\n\t\t\t\t\t{ ( ! RichText.isEmpty( byline ) || isSelected ) && (\n\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\tclassName=\"wp-block-post-author__byline\"\n\t\t\t\t\t\t\tmultiline={ false }\n\t\t\t\t\t\t\taria-label={ __( 'Post author byline text' ) }\n\t\t\t\t\t\t\tplaceholder={ __( 'Write byline…' ) }\n\t\t\t\t\t\t\tvalue={ byline }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { byline: value } )\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\t<p className=\"wp-block-post-author__name\">\n\t\t\t\t\t\t{ isLink ? (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"#post-author-pseudo-link\"\n\t\t\t\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ authorName }\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tauthorName\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t\t{ showBio && (\n\t\t\t\t\t\t<p\n\t\t\t\t\t\t\tclassName=\"wp-block-post-author__bio\"\n\t\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t\t__html: authorDetails?.description,\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</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default PostAuthorEdit;\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/post-author' ],\n\t\t\ttransform: ( { textAlign } ) =>\n\t\t\t\tcreateBlock( 'core/post-author-name', { textAlign } ),\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/post-author' ],\n\t\t\ttransform: ( { textAlign } ) =>\n\t\t\t\tcreateBlock( 'core/post-author', { textAlign } ),\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { postAuthor 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 transforms from './transforms';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\ttransforms,\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { PanelBody, ToggleControl } from '@wordpress/components';\n\nfunction PostAuthorNameEdit( {\n\tcontext: { postType, postId },\n\tattributes: { textAlign, isLink, linkTarget },\n\tsetAttributes,\n} ) {\n\tconst { authorName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, getUser } = select( coreStore );\n\t\t\tconst _authorId = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t)?.author;\n\n\t\t\treturn {\n\t\t\t\tauthorName: _authorId ? getUser( _authorId ) : null,\n\t\t\t};\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tconst displayName = authorName?.name || __( 'Author Name' );\n\n\tconst displayAuthor = isLink ? (\n\t\t<a\n\t\t\thref=\"#author-pseudo-link\"\n\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\tclassName=\"wp-block-post-author-name__link\"\n\t\t>\n\t\t\t{ displayName }\n\t\t</a>\n\t) : (\n\t\tdisplayName\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Link to author archive' ) }\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<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\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\t<div { ...blockProps }> { displayAuthor } </div>\n\t\t</>\n\t);\n}\n\nexport default PostAuthorNameEdit;\n","/**\n * WordPress dependencies\n */\nimport { postAuthor 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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\nfunction PostAuthorBiographyEdit( {\n\tcontext: { postType, postId },\n\tattributes: { textAlign },\n\tsetAttributes,\n} ) {\n\tconst { authorDetails } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, getUser } = select( coreStore );\n\t\t\tconst _authorId = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t)?.author;\n\n\t\t\treturn {\n\t\t\t\tauthorDetails: _authorId ? getUser( _authorId ) : null,\n\t\t\t};\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tconst displayAuthorBiography =\n\t\tauthorDetails?.description || __( 'Author Biography' );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<div\n\t\t\t\t{ ...blockProps }\n\t\t\t\tdangerouslySetInnerHTML={ { __html: displayAuthorBiography } }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default PostAuthorBiographyEdit;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst blockDefault = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M19 8h-1V6h-5v2h-2V6H6v2H5c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm.5 10c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5v-8c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v8z\" />\n\t</SVG>\n);\n\nexport default blockDefault;\n","/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { Placeholder, TextControl, Button } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { blockDefault } from '@wordpress/icons';\nimport { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';\n\nconst ALLOWED_BLOCKS = [\n\t'core/avatar',\n\t'core/comment-author-name',\n\t'core/comment-content',\n\t'core/comment-date',\n\t'core/comment-edit-link',\n\t'core/comment-reply-link',\n];\nconst TEMPLATE = [\n\t[ 'core/avatar' ],\n\t[ 'core/comment-author-name' ],\n\t[ 'core/comment-date' ],\n\t[ 'core/comment-content' ],\n\t[ 'core/comment-reply-link' ],\n\t[ 'core/comment-edit-link' ],\n];\n\nexport default function Edit( { attributes: { commentId }, setAttributes } ) {\n\tconst [ commentIdInput, setCommentIdInput ] = useState( commentId );\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t} );\n\n\tif ( ! commentId ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Placeholder\n\t\t\t\t\ticon={ blockDefault }\n\t\t\t\t\tlabel={ _x( 'Post Comment', 'block title' ) }\n\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t'To show a comment, input the comment ID.'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tvalue={ commentId }\n\t\t\t\t\t\tonChange={ ( val ) =>\n\t\t\t\t\t\t\tsetCommentIdInput( parseInt( val ) )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetAttributes( { commentId: commentIdInput } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</Placeholder>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn <div { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { comment 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 save from './save';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save() {\n\tconst blockProps = useBlockProps.save();\n\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\treturn <div { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst postCommentsCount = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M13 8H4v1.5h9V8zM4 4v1.5h16V4H4zm9 8H5c-.6 0-1 .4-1 1v8.3c0 .3.2.7.6.8.1.1.2.1.3.1.2 0 .5-.1.6-.3l1.8-1.8H13c.6 0 1-.4 1-1V13c0-.6-.4-1-1-1zm-2.2 6.6H7l1.6-2.2c.3-.4.5-.7.6-.9.1-.2.2-.4.2-.5 0-.2-.1-.3-.1-.4-.1-.1-.2-.1-.4-.1s-.4 0-.6.1c-.3.1-.5.3-.7.4l-.2.2-.2-1.2.1-.1c.3-.2.5-.3.8-.4.3-.1.6-.1.9-.1.3 0 .6.1.9.2.2.1.4.3.6.5.1.2.2.5.2.7 0 .3-.1.6-.2.9-.1.3-.4.7-.7 1.1l-.5.6h1.6v1.2z\" />\n\t</SVG>\n);\n\nexport default postCommentsCount;\n","/**\n * WordPress dependencies\n */\nimport { postCommentsCount 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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tWarning,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { useState, useEffect } from '@wordpress/element';\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\nimport { __ } from '@wordpress/i18n';\n\nexport default function PostCommentsCountEdit( {\n\tattributes,\n\tcontext,\n\tsetAttributes,\n} ) {\n\tconst { textAlign } = attributes;\n\tconst { postId } = context;\n\tconst [ commentsCount, setCommentsCount ] = useState();\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tuseEffect( () => {\n\t\tif ( ! postId ) {\n\t\t\treturn;\n\t\t}\n\t\tconst currentPostId = postId;\n\t\tapiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/comments', {\n\t\t\t\tpost: postId,\n\t\t\t} ),\n\t\t\tparse: false,\n\t\t} ).then( ( res ) => {\n\t\t\t// Stale requests will have the `currentPostId` of an older closure.\n\t\t\tif ( currentPostId === postId ) {\n\t\t\t\tsetCommentsCount( res.headers.get( 'X-WP-Total' ) );\n\t\t\t}\n\t\t} );\n\t}, [ postId ] );\n\n\tconst hasPostAndComments = postId && commentsCount !== undefined;\n\tconst blockStyles = {\n\t\t...blockProps.style,\n\t\ttextDecoration: hasPostAndComments\n\t\t\t? blockProps.style?.textDecoration\n\t\t\t: undefined,\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps } style={ blockStyles }>\n\t\t\t\t{ hasPostAndComments ? (\n\t\t\t\t\tcommentsCount\n\t\t\t\t) : (\n\t\t\t\t\t<Warning>\n\t\t\t\t\t\t{ __( 'Post Comments Count block: post not found.' ) }\n\t\t\t\t\t</Warning>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst postCommentsForm = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M13 8H4v1.5h9V8zM4 4v1.5h16V4H4zm9 8H5c-.6 0-1 .4-1 1v8.3c0 .3.2.7.6.8.1.1.2.1.3.1.2 0 .5-.1.6-.3l1.8-1.8H13c.6 0 1-.4 1-1V13c0-.6-.4-1-1-1zm-.5 6.6H6.7l-1.2 1.2v-6.3h7v5.1z\" />\n\t</SVG>\n);\n\nexport default postCommentsForm;\n","/**\n * WordPress dependencies\n */\nimport { postCommentsForm 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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport CommentsForm from './form';\n\nexport default function PostCommentsFormEdit( {\n\tattributes,\n\tcontext,\n\tsetAttributes,\n} ) {\n\tconst { textAlign } = attributes;\n\tconst { postId, postType } = context;\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<CommentsForm postId={ postId } postType={ postType } />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { postCommentsCount 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\tedit,\n\ticon,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tWarning,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport apiFetch from '@wordpress/api-fetch';\nimport { addQueryArgs } from '@wordpress/url';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\nfunction PostCommentsLinkEdit( { context, attributes, setAttributes } ) {\n\tconst { textAlign } = attributes;\n\tconst { postType, postId } = context;\n\tconst [ commentsCount, setCommentsCount ] = useState();\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tuseEffect( () => {\n\t\tif ( ! postId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentPostId = postId;\n\t\tapiFetch( {\n\t\t\tpath: addQueryArgs( '/wp/v2/comments', {\n\t\t\t\tpost: postId,\n\t\t\t} ),\n\t\t\tparse: false,\n\t\t} ).then( ( res ) => {\n\t\t\t// Stale requests will have the `currentPostId` of an older closure.\n\t\t\tif ( currentPostId === postId ) {\n\t\t\t\tsetCommentsCount( res.headers.get( 'X-WP-Total' ) );\n\t\t\t}\n\t\t} );\n\t}, [ postId ] );\n\n\tconst post = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t),\n\t\t[ postType, postId ]\n\t);\n\n\tif ( ! post ) {\n\t\treturn null;\n\t}\n\n\tconst { link } = post;\n\n\tlet commentsText;\n\tif ( commentsCount !== undefined ) {\n\t\tconst commentsNumber = parseInt( commentsCount );\n\n\t\tif ( commentsNumber === 0 ) {\n\t\t\tcommentsText = __( 'No comments' );\n\t\t} else {\n\t\t\tcommentsText = sprintf(\n\t\t\t\t/* translators: %s: Number of comments */\n\t\t\t\t_n( '%s comment', '%s comments', commentsNumber ),\n\t\t\t\tcommentsNumber.toLocaleString()\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ link && commentsText !== undefined ? (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={ link + '#comments' }\n\t\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ commentsText }\n\t\t\t\t\t</a>\n\t\t\t\t) : (\n\t\t\t\t\t<Warning>\n\t\t\t\t\t\t{ __( 'Post Comments Link block: post not found.' ) }\n\t\t\t\t\t</Warning>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default PostCommentsLinkEdit;\n","/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Returns whether the current user can edit the given entity.\n *\n * @param {string} kind     Entity kind.\n * @param {string} name     Entity name.\n * @param {string} recordId Record's id.\n */\nexport function useCanEditEntity( kind, name, recordId ) {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUserEditEntityRecord( kind, name, recordId ),\n\t\t[ kind, name, recordId ]\n\t);\n}\n\nexport default {\n\tuseCanEditEntity,\n};\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tuseSetting,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentalUseHasRecursion as useHasRecursion,\n\tstore as blockEditorStore,\n\tWarning,\n} from '@wordpress/block-editor';\nimport { useEntityProp, useEntityBlockEditor } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { useCanEditEntity } from '../utils/hooks';\n\nfunction ReadOnlyContent( { userCanEdit, postType, postId } ) {\n\tconst [ , , content ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'content',\n\t\tpostId\n\t);\n\tconst blockProps = useBlockProps();\n\treturn content?.protected && ! userCanEdit ? (\n\t\t<div { ...blockProps }>\n\t\t\t<Warning>{ __( 'This content is password protected.' ) }</Warning>\n\t\t</div>\n\t) : (\n\t\t<div\n\t\t\t{ ...blockProps }\n\t\t\tdangerouslySetInnerHTML={ { __html: content?.rendered } }\n\t\t></div>\n\t);\n}\n\nfunction EditableContent( { layout, context = {} } ) {\n\tconst { postType, postId } = context;\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings()?.supportsLayout;\n\t}, [] );\n\tconst defaultLayout = useSetting( 'layout' ) || {};\n\tconst usedLayout = ! layout?.type\n\t\t? { ...defaultLayout, ...layout, type: 'default' }\n\t\t: { ...defaultLayout, ...layout };\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\tpostType,\n\t\t{ id: postId }\n\t);\n\n\tconst props = useInnerBlocksProps(\n\t\tuseBlockProps( { className: 'entry-content' } ),\n\t\t{\n\t\t\tvalue: blocks,\n\t\t\tonInput,\n\t\t\tonChange,\n\t\t\t__experimentalLayout: themeSupportsLayout ? usedLayout : undefined,\n\t\t}\n\t);\n\treturn <div { ...props } />;\n}\n\nfunction Content( props ) {\n\tconst { context: { queryId, postType, postId } = {} } = props;\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst userCanEdit = useCanEditEntity( 'postType', postType, postId );\n\tconst isEditable = userCanEdit && ! isDescendentOfQueryLoop;\n\n\treturn isEditable ? (\n\t\t<EditableContent { ...props } />\n\t) : (\n\t\t<ReadOnlyContent\n\t\t\tuserCanEdit={ userCanEdit }\n\t\t\tpostType={ postType }\n\t\t\tpostId={ postId }\n\t\t/>\n\t);\n}\n\nfunction Placeholder() {\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'This is the Post Content block, it will display all the blocks in any single post or page.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'That might be a simple arrangement like consecutive paragraphs in a blog post, or a more elaborate composition that includes image galleries, videos, tables, columns, and any other block types.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'If there are any Custom Post Types registered at your site, the Post Content block can display the contents of those entries as well.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t</div>\n\t);\n}\n\nfunction RecursionError() {\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t</div>\n\t);\n}\n\nexport default function PostContentEdit( { context, attributes } ) {\n\tconst { postId: contextPostId, postType: contextPostType } = context;\n\tconst { layout = {} } = attributes;\n\tconst hasAlreadyRendered = useHasRecursion( contextPostId );\n\n\tif ( contextPostId && contextPostType && hasAlreadyRendered ) {\n\t\treturn <RecursionError />;\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ contextPostId }>\n\t\t\t{ contextPostId && contextPostType ? (\n\t\t\t\t<Content context={ context } layout={ layout } />\n\t\t\t) : (\n\t\t\t\t<Placeholder />\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { postContent 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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useMemo, useState } from '@wordpress/element';\nimport { dateI18n, getSettings as getDateSettings } from '@wordpress/date';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\t__experimentalDateFormatPicker as DateFormatPicker,\n\t__experimentalPublishDateTimePicker as PublishDateTimePicker,\n} from '@wordpress/block-editor';\nimport {\n\tDropdown,\n\tToolbarGroup,\n\tToolbarButton,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { edit } from '@wordpress/icons';\nimport { DOWN } from '@wordpress/keycodes';\nimport { useSelect } from '@wordpress/data';\n\nexport default function PostDateEdit( {\n\tattributes: { textAlign, format, isLink, displayType },\n\tcontext: { postId, postType: postTypeSlug, queryId },\n\tsetAttributes,\n} ) {\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( { anchor: popoverAnchor } ),\n\t\t[ popoverAnchor ]\n\t);\n\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst dateSettings = getDateSettings();\n\tconst [ siteFormat = dateSettings.formats.date ] = useEntityProp(\n\t\t'root',\n\t\t'site',\n\t\t'date_format'\n\t);\n\tconst [ siteTimeFormat = dateSettings.formats.time ] = useEntityProp(\n\t\t'root',\n\t\t'site',\n\t\t'time_format'\n\t);\n\tconst [ date, setDate ] = useEntityProp(\n\t\t'postType',\n\t\tpostTypeSlug,\n\t\tdisplayType,\n\t\tpostId\n\t);\n\n\tconst postType = useSelect(\n\t\t( select ) =>\n\t\t\tpostTypeSlug\n\t\t\t\t? select( coreStore ).getPostType( postTypeSlug )\n\t\t\t\t: null,\n\t\t[ postTypeSlug ]\n\t);\n\n\tlet postDate = date ? (\n\t\t<time dateTime={ dateI18n( 'c', date ) } ref={ setPopoverAnchor }>\n\t\t\t{ dateI18n( format || siteFormat, date ) }\n\t\t</time>\n\t) : (\n\t\t__( 'Post Date' )\n\t);\n\n\tif ( isLink && date ) {\n\t\tpostDate = (\n\t\t\t<a\n\t\t\t\thref=\"#post-date-pseudo-link\"\n\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t>\n\t\t\t\t{ postDate }\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ date && ! isDescendentOfQueryLoop && (\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<Dropdown\n\t\t\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t\t\t<PublishDateTimePicker\n\t\t\t\t\t\t\t\t\tcurrentDate={ date }\n\t\t\t\t\t\t\t\t\tonChange={ setDate }\n\t\t\t\t\t\t\t\t\tis12Hour={ is12HourFormat(\n\t\t\t\t\t\t\t\t\t\tsiteTimeFormat\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => {\n\t\t\t\t\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\tonToggle();\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\treturn (\n\t\t\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\t\t\t\t\ttitle={ __( 'Change Date' ) }\n\t\t\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\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} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<DateFormatPicker\n\t\t\t\t\t\tformat={ format }\n\t\t\t\t\t\tdefaultFormat={ siteFormat }\n\t\t\t\t\t\tonChange={ ( nextFormat ) =>\n\t\t\t\t\t\t\tsetAttributes( { format: nextFormat } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\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: \"post\".\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.toLowerCase()\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<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display last modified date' ) }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdisplayType: value ? 'modified' : 'date',\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ displayType === 'modified' }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\n\t\t\t<div { ...blockProps }>{ postDate }</div>\n\t\t</>\n\t);\n}\n\nexport function is12HourFormat( format ) {\n\t// To know if the time format is a 12 hour time, look for any of the 12 hour\n\t// format characters: 'a', 'A', 'g', and 'h'. The character must be\n\t// unescaped, i.e. not preceded by a '\\'. Coincidentally, 'aAgh' is how I\n\t// feel when working with regular expressions.\n\t// https://www.php.net/manual/en/datetime.format.php\n\treturn /(?:^|[^\\\\])[aAgh]/.test( format );\n}\n","/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\n\nconst v1 = {\n\tattributes: {\n\t\ttextAlign: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tformat: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tisLink: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tsupports: {\n\t\thtml: false,\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t\tlink: true,\n\t\t},\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\t__experimentalLetterSpacing: true,\n\t\t},\n\t},\n\tsave() {\n\t\treturn null;\n\t},\n\tmigrate: migrateFontFamily,\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v1 ];\n","/**\n * WordPress dependencies\n */\nimport { postDate 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","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst postExcerpt = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M12.75 9.333c0 .521-.102.977-.327 1.354-.23.386-.555.628-.893.774-.545.234-1.183.227-1.544.222l-.12-.001v-1.5h.123c.414.001.715.002.948-.099a.395.395 0 00.199-.166c.05-.083.114-.253.114-.584V7.2H8.8V4h3.95v5.333zM7.95 9.333c0 .521-.102.977-.327 1.354-.23.386-.555.628-.893.774-.545.234-1.183.227-1.544.222l-.12-.001v-1.5h.123c.414.001.715.002.948-.099a.394.394 0 00.198-.166c.05-.083.115-.253.115-.584V7.2H4V4h3.95v5.333zM13 20H4v-1.5h9V20zM20 16H4v-1.5h16V16z\" />\n\t</SVG>\n);\n\nexport default postExcerpt;\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/post-content' ],\n\t\t\ttransform: () => createBlock( 'core/post-excerpt' ),\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/post-content' ],\n\t\t\ttransform: () => createBlock( 'core/post-content' ),\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { postExcerpt 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 transforms from './transforms';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\ttransforms,\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useEntityProp } from '@wordpress/core-data';\nimport { useMemo } from '@wordpress/element';\nimport {\n\tAlignmentToolbar,\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\tWarning,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { PanelBody, ToggleControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useCanEditEntity } from '../utils/hooks';\n\nexport default function PostExcerptEditor( {\n\tattributes: { textAlign, moreText, showMoreOnNewLine },\n\tsetAttributes,\n\tisSelected,\n\tcontext: { postId, postType, queryId },\n} ) {\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst userCanEdit = useCanEditEntity( 'postType', postType, postId );\n\tconst isEditable = userCanEdit && ! isDescendentOfQueryLoop;\n\tconst [\n\t\trawExcerpt,\n\t\tsetExcerpt,\n\t\t{ rendered: renderedExcerpt, protected: isProtected } = {},\n\t] = useEntityProp( 'postType', postType, 'excerpt', postId );\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\t/**\n\t * When excerpt is editable, strip the html tags from\n\t * rendered excerpt. This will be used if the entity's\n\t * excerpt has been produced from the content.\n\t */\n\tconst strippedRenderedExcerpt = useMemo( () => {\n\t\tif ( ! renderedExcerpt ) return '';\n\t\tconst document = new window.DOMParser().parseFromString(\n\t\t\trenderedExcerpt,\n\t\t\t'text/html'\n\t\t);\n\t\treturn document.body.textContent || document.body.innerText || '';\n\t}, [ renderedExcerpt ] );\n\tif ( ! postType || ! postId ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'This is the Post Excerpt block, it will display the excerpt from single posts.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'If there are any Custom Post Types with support for excerpts, the Post Excerpt block can display the excerpts of those entries as well.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t);\n\t}\n\tif ( isProtected && ! userCanEdit ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'There is no excerpt because this is a protected post.'\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</div>\n\t\t);\n\t}\n\tconst readMoreLink = (\n\t\t<RichText\n\t\t\tclassName=\"wp-block-post-excerpt__more-link\"\n\t\t\ttagName=\"a\"\n\t\t\taria-label={ __( '“Read more” link text' ) }\n\t\t\tplaceholder={ __( 'Add \"read more\" link text' ) }\n\t\t\tvalue={ moreText }\n\t\t\tonChange={ ( newMoreText ) =>\n\t\t\t\tsetAttributes( { moreText: newMoreText } )\n\t\t\t}\n\t\t\twithoutInteractiveFormatting={ true }\n\t\t/>\n\t);\n\tconst excerptClassName = classnames( 'wp-block-post-excerpt__excerpt', {\n\t\t'is-inline': ! showMoreOnNewLine,\n\t} );\n\tconst excerptContent = isEditable ? (\n\t\t<RichText\n\t\t\tclassName={ excerptClassName }\n\t\t\taria-label={ __( 'Post excerpt text' ) }\n\t\t\tvalue={\n\t\t\t\trawExcerpt ||\n\t\t\t\tstrippedRenderedExcerpt ||\n\t\t\t\t( isSelected ? '' : __( 'No post excerpt found' ) )\n\t\t\t}\n\t\t\tonChange={ setExcerpt }\n\t\t\ttagName=\"p\"\n\t\t/>\n\t) : (\n\t\t<p className={ excerptClassName }>\n\t\t\t{ strippedRenderedExcerpt || __( 'No post excerpt found' ) }\n\t\t</p>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<AlignmentToolbar\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( newAlign ) =>\n\t\t\t\t\t\tsetAttributes( { textAlign: newAlign } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</BlockControls>\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\tlabel={ __( 'Show link on new line' ) }\n\t\t\t\t\t\tchecked={ showMoreOnNewLine }\n\t\t\t\t\t\tonChange={ ( newShowMoreOnNewLine ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowMoreOnNewLine: newShowMoreOnNewLine,\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\t<div { ...blockProps }>\n\t\t\t\t{ excerptContent }\n\t\t\t\t{ ! showMoreOnNewLine && ' ' }\n\t\t\t\t{ showMoreOnNewLine ? (\n\t\t\t\t\t<p className=\"wp-block-post-excerpt__more-text\">\n\t\t\t\t\t\t{ readMoreLink }\n\t\t\t\t\t</p>\n\t\t\t\t) : (\n\t\t\t\t\treadMoreLink\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst postFeaturedImage = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M19 3H5c-.6 0-1 .4-1 1v7c0 .5.4 1 1 1h14c.5 0 1-.4 1-1V4c0-.6-.4-1-1-1zM5.5 10.5v-.4l1.8-1.3 1.3.8c.3.2.7.2.9-.1L11 8.1l2.4 2.4H5.5zm13 0h-2.9l-4-4c-.3-.3-.8-.3-1.1 0L8.9 8l-1.2-.8c-.3-.2-.6-.2-.9 0l-1.3 1V4.5h13v6zM4 20h9v-1.5H4V20zm0-4h16v-1.5H4V16z\" />\n\t</SVG>\n);\n\nexport default postFeaturedImage;\n","/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tSelectControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { InspectorControls, useSetting } from '@wordpress/block-editor';\n\nconst SCALE_OPTIONS = (\n\t<>\n\t\t<ToggleGroupControlOption\n\t\t\tvalue=\"cover\"\n\t\t\tlabel={ _x( 'Cover', 'Scale option for Image dimension control' ) }\n\t\t/>\n\t\t<ToggleGroupControlOption\n\t\t\tvalue=\"contain\"\n\t\t\tlabel={ _x(\n\t\t\t\t'Contain',\n\t\t\t\t'Scale option for Image dimension control'\n\t\t\t) }\n\t\t/>\n\t\t<ToggleGroupControlOption\n\t\t\tvalue=\"fill\"\n\t\t\tlabel={ _x( 'Fill', 'Scale option for Image dimension control' ) }\n\t\t/>\n\t</>\n);\n\nconst DEFAULT_SCALE = 'cover';\nconst DEFAULT_SIZE = 'full';\n\nconst scaleHelp = {\n\tcover: __(\n\t\t'Image is scaled and cropped to fill the entire space without being distorted.'\n\t),\n\tcontain: __(\n\t\t'Image is scaled to fill the space without clipping nor distorting.'\n\t),\n\tfill: __(\n\t\t'Image will be stretched and distorted to completely fill the space.'\n\t),\n};\n\nconst DimensionControls = ( {\n\tclientId,\n\tattributes: { width, height, scale, sizeSlug },\n\tsetAttributes,\n\timageSizeOptions = [],\n} ) => {\n\tconst defaultUnits = [ 'px', '%', 'vw', 'em', 'rem' ];\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || defaultUnits,\n\t} );\n\tconst onDimensionChange = ( dimension, nextValue ) => {\n\t\tconst parsedValue = parseFloat( nextValue );\n\t\t/**\n\t\t * If we have no value set and we change the unit,\n\t\t * we don't want to set the attribute, as it would\n\t\t * end up having the unit as value without any number.\n\t\t */\n\t\tif ( isNaN( parsedValue ) && nextValue ) return;\n\t\tsetAttributes( {\n\t\t\t[ dimension ]: parsedValue < 0 ? '0' : nextValue,\n\t\t} );\n\t};\n\tconst scaleLabel = _x( 'Scale', 'Image scaling options' );\n\treturn (\n\t\t<InspectorControls __experimentalGroup=\"dimensions\">\n\t\t\t<ToolsPanelItem\n\t\t\t\tclassName=\"single-column\"\n\t\t\t\thasValue={ () => !! height }\n\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\tonDeselect={ () => setAttributes( { height: undefined } ) }\n\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\theight: undefined,\n\t\t\t\t} ) }\n\t\t\t\tisShownByDefault={ true }\n\t\t\t\tpanelId={ clientId }\n\t\t\t>\n\t\t\t\t<UnitControl\n\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\tvalue={ height || '' }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tonChange={ ( nextHeight ) =>\n\t\t\t\t\t\tonDimensionChange( 'height', nextHeight )\n\t\t\t\t\t}\n\t\t\t\t\tunits={ units }\n\t\t\t\t/>\n\t\t\t</ToolsPanelItem>\n\t\t\t<ToolsPanelItem\n\t\t\t\tclassName=\"single-column\"\n\t\t\t\thasValue={ () => !! width }\n\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\tonDeselect={ () => setAttributes( { width: undefined } ) }\n\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\twidth: undefined,\n\t\t\t\t} ) }\n\t\t\t\tisShownByDefault={ true }\n\t\t\t\tpanelId={ clientId }\n\t\t\t>\n\t\t\t\t<UnitControl\n\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\tvalue={ width || '' }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tonChange={ ( nextWidth ) =>\n\t\t\t\t\t\tonDimensionChange( 'width', nextWidth )\n\t\t\t\t\t}\n\t\t\t\t\tunits={ units }\n\t\t\t\t/>\n\t\t\t</ToolsPanelItem>\n\t\t\t{ !! height && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! scale && scale !== DEFAULT_SCALE }\n\t\t\t\t\tlabel={ scaleLabel }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tscale: DEFAULT_SCALE,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\t\tscale: DEFAULT_SCALE,\n\t\t\t\t\t} ) }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t>\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\tlabel={ scaleLabel }\n\t\t\t\t\t\tvalue={ scale }\n\t\t\t\t\t\thelp={ scaleHelp[ scale ] }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tscale: value,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t>\n\t\t\t\t\t\t{ SCALE_OPTIONS }\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ !! imageSizeOptions.length && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! sizeSlug }\n\t\t\t\t\tlabel={ __( 'Image size' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( { sizeSlug: undefined } )\n\t\t\t\t\t}\n\t\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\t\tsizeSlug: undefined,\n\t\t\t\t\t} ) }\n\t\t\t\t\tisShownByDefault={ false }\n\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Image size' ) }\n\t\t\t\t\t\tvalue={ sizeSlug || DEFAULT_SIZE }\n\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\tonChange={ ( nextSizeSlug ) =>\n\t\t\t\t\t\t\tsetAttributes( { sizeSlug: nextSizeSlug } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thelp={ __( 'Select the size of the source image.' ) }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</InspectorControls>\n\t);\n};\n\nexport default DimensionControls;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRangeControl,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\twithColors,\n\t__experimentalColorGradientSettingsDropdown as ColorGradientSettingsDropdown,\n\t__experimentalUseGradient,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n\t__experimentalUseBorderProps as useBorderProps,\n} from '@wordpress/block-editor';\nimport { compose } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { dimRatioToClass } from './utils';\n\nconst Overlay = ( {\n\tclientId,\n\tattributes,\n\tsetAttributes,\n\toverlayColor,\n\tsetOverlayColor,\n} ) => {\n\tconst { dimRatio } = attributes;\n\tconst { gradientClass, gradientValue, setGradient } =\n\t\t__experimentalUseGradient();\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst overlayStyles = {\n\t\tbackgroundColor: overlayColor.color,\n\t\tbackgroundImage: gradientValue,\n\t\t...borderProps.style,\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ !! dimRatio && (\n\t\t\t\t<span\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'wp-block-post-featured-image__overlay',\n\t\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[ overlayColor.class ]: overlayColor.class,\n\t\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tborderProps.className\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ overlayStyles }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<InspectorControls __experimentalGroup=\"color\">\n\t\t\t\t<ColorGradientSettingsDropdown\n\t\t\t\t\t__experimentalHasMultipleOrigins\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\tsettings={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcolorValue: overlayColor.color,\n\t\t\t\t\t\t\tgradientValue,\n\t\t\t\t\t\t\tlabel: __( 'Overlay' ),\n\t\t\t\t\t\t\tonColorChange: setOverlayColor,\n\t\t\t\t\t\t\tonGradientChange: setGradient,\n\t\t\t\t\t\t\tisShownByDefault: true,\n\t\t\t\t\t\t\tresetAllFilter: () => ( {\n\t\t\t\t\t\t\t\toverlayColor: undefined,\n\t\t\t\t\t\t\t\tcustomOverlayColor: undefined,\n\t\t\t\t\t\t\t\tgradient: undefined,\n\t\t\t\t\t\t\t\tcustomGradient: undefined,\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\tpanelId={ clientId }\n\t\t\t\t\t{ ...colorGradientSettings }\n\t\t\t\t/>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => dimRatio !== undefined }\n\t\t\t\t\tlabel={ __( 'Overlay opacity' ) }\n\t\t\t\t\tonDeselect={ () => setAttributes( { dimRatio: 0 } ) }\n\t\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\t\tdimRatio: 0,\n\t\t\t\t\t} ) }\n\t\t\t\t\tisShownByDefault\n\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tlabel={ __( 'Overlay opacity' ) }\n\t\t\t\t\t\tvalue={ dimRatio }\n\t\t\t\t\t\tonChange={ ( newDimRatio ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdimRatio: newDimRatio,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ 100 }\n\t\t\t\t\t\tstep={ 10 }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n};\n\nexport default compose( [\n\twithColors( { overlayColor: 'background-color' } ),\n] )( Overlay );\n","/**\n * Generates the opacity/dim class based on given number.\n *\n * @param {number} ratio Dim/opacity number.\n *\n * @return {string} Generated class.\n */\nexport function dimRatioToClass( ratio ) {\n\treturn ratio === undefined\n\t\t? null\n\t\t: 'has-background-dim-' + 10 * Math.round( ratio / 10 );\n}\n","/**\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\nfunction PostFeaturedImageDisplay( {\n\tclientId,\n\tattributes,\n\tsetAttributes,\n\tcontext: { postId, postType: postTypeSlug, queryId },\n} ) {\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst { isLink, height, width, scale, sizeSlug, rel, linkTarget } =\n\t\tattributes;\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 } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getMedia, getPostType } = select( 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};\n\t\t},\n\t\t[ featuredImage, postTypeSlug ]\n\t);\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 },\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={ borderProps.style }\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={ __( 'Link settings' ) }>\n\t\t\t\t\t<ToggleControl\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: \"post\".\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.toLowerCase()\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\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\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\tif ( ! featuredImage && isDescendentOfQueryLoop ) {\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{ placeholder() }\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,\n\t\tobjectFit: height && scale,\n\t};\n\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\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{ image }\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\nexport default function PostFeaturedImageEdit( props ) {\n\tconst blockProps = useBlockProps();\n\tconst borderProps = useBorderProps( props.attributes );\n\n\tif ( ! props.context?.postId ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Placeholder\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'block-editor-media-placeholder',\n\t\t\t\t\t\tborderProps.className\n\t\t\t\t\t) }\n\t\t\t\t\twithIllustration={ true }\n\t\t\t\t\tstyle={ borderProps.style }\n\t\t\t\t/>\n\t\t\t\t<Overlay\n\t\t\t\t\tattributes={ props.attributes }\n\t\t\t\t\tsetAttributes={ props.setAttributes }\n\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\treturn <PostFeaturedImageDisplay { ...props } />;\n}\n","/**\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","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst next = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z\" />\n\t</SVG>\n);\n\nexport default next;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst previous = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z\" />\n\t</SVG>\n);\n\nexport default previous;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { next, previous } from '@wordpress/icons';\n\nconst variations = [\n\t{\n\t\tisDefault: true,\n\t\tname: 'post-next',\n\t\ttitle: __( 'Next post' ),\n\t\tdescription: __(\n\t\t\t'Displays the post link that follows the current post.'\n\t\t),\n\t\ticon: next,\n\t\tattributes: { type: 'next' },\n\t\tscope: [ 'inserter', 'transform' ],\n\t},\n\t{\n\t\tname: 'post-previous',\n\t\ttitle: __( 'Previous post' ),\n\t\tdescription: __(\n\t\t\t'Displays the post link that precedes the current post.'\n\t\t),\n\t\ticon: previous,\n\t\tattributes: { type: 'previous' },\n\t\tscope: [ 'inserter', 'transform' ],\n\t},\n];\n\n/**\n * Add `isActive` function to all `post-navigation-link` variations, if not defined.\n * `isActive` function is used to find a variation match from a created\n *  Block by providing its attributes.\n */\nvariations.forEach( ( variation ) => {\n\tif ( variation.isActive ) return;\n\tvariation.isActive = ( blockAttributes, variationAttributes ) =>\n\t\tblockAttributes.type === variationAttributes.type;\n} );\n\nexport default variations;\n","/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport variations from './variations';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\tedit,\n\tvariations,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\tToggleControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\tRichText,\n\tBlockControls,\n\tAlignmentToolbar,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { __, _x } from '@wordpress/i18n';\n\nexport default function PostNavigationLinkEdit( {\n\tattributes: { type, label, showTitle, textAlign, linkLabel, arrow },\n\tsetAttributes,\n} ) {\n\tconst isNext = type === 'next';\n\tlet placeholder = isNext ? __( 'Next' ) : __( 'Previous' );\n\n\tconst arrowMap = {\n\t\tnone: '',\n\t\tarrow: isNext ? '→' : '←',\n\t\tchevron: isNext ? '»' : '«',\n\t};\n\n\tconst displayArrow = arrowMap[ arrow ];\n\n\tif ( showTitle ) {\n\t\t/* translators: Label before for next and previous post. There is a space after the colon. */\n\t\tplaceholder = isNext ? __( 'Next: ' ) : __( 'Previous: ' );\n\t}\n\n\tconst ariaLabel = isNext ? __( 'Next post' ) : __( 'Previous post' );\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display the title as a link' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'If you have entered a custom label, it will be prepended before the title.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tchecked={ !! showTitle }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowTitle: ! showTitle,\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\t{ showTitle && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t'Include the label as part of the link'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tchecked={ !! linkLabel }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tlinkLabel: ! linkLabel,\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\t<ToggleGroupControl\n\t\t\t\t\t\tlabel={ __( 'Arrow' ) }\n\t\t\t\t\t\tvalue={ arrow }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tsetAttributes( { arrow: value } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'A decorative arrow for the next and previous link.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"none\"\n\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t'None',\n\t\t\t\t\t\t\t\t'Arrow option for Next/Previous link'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"arrow\"\n\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t'Arrow',\n\t\t\t\t\t\t\t\t'Arrow option for Next/Previous link'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"chevron\"\n\t\t\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t\t\t'Chevron',\n\t\t\t\t\t\t\t\t'Arrow option for Next/Previous link'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<BlockControls>\n\t\t\t\t<AlignmentToolbar\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ ! isNext && displayArrow && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ `wp-block-post-navigation-link__arrow-previous is-arrow-${ arrow }` }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ displayArrow }\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<RichText\n\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\tallowedFormats={ [ 'core/bold', 'core/italic' ] }\n\t\t\t\t\tonChange={ ( newLabel ) =>\n\t\t\t\t\t\tsetAttributes( { label: newLabel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{ showTitle && (\n\t\t\t\t\t<a\n\t\t\t\t\t\thref=\"#post-navigation-pseudo-link\"\n\t\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'An example title' ) }\n\t\t\t\t\t</a>\n\t\t\t\t) }\n\t\t\t\t{ isNext && displayArrow && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ `wp-block-post-navigation-link__arrow-next is-arrow-${ arrow }` }\n\t\t\t\t\t\taria-hidden={ true }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ displayArrow }\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { memo, useMemo, useState } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockContextProvider,\n\t__experimentalUseBlockPreview as useBlockPreview,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { Spinner } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\n\nconst TEMPLATE = [\n\t[ 'core/post-title' ],\n\t[ 'core/post-date' ],\n\t[ 'core/post-excerpt' ],\n];\n\nfunction PostTemplateInnerBlocks() {\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{ className: 'wp-block-post' },\n\t\t{ template: TEMPLATE }\n\t);\n\treturn <li { ...innerBlocksProps } />;\n}\n\nfunction PostTemplateBlockPreview( {\n\tblocks,\n\tblockContextId,\n\tisHidden,\n\tsetActiveBlockContextId,\n} ) {\n\tconst blockPreviewProps = useBlockPreview( {\n\t\tblocks,\n\t\tprops: {\n\t\t\tclassName: 'wp-block-post',\n\t\t},\n\t} );\n\n\tconst handleOnClick = () => {\n\t\tsetActiveBlockContextId( blockContextId );\n\t};\n\n\tconst style = {\n\t\tdisplay: isHidden ? 'none' : undefined,\n\t};\n\n\treturn (\n\t\t<li\n\t\t\t{ ...blockPreviewProps }\n\t\t\ttabIndex={ 0 }\n\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n\t\t\trole=\"button\"\n\t\t\tonClick={ handleOnClick }\n\t\t\tonKeyPress={ handleOnClick }\n\t\t\tstyle={ style }\n\t\t/>\n\t);\n}\n\nconst MemoizedPostTemplateBlockPreview = memo( PostTemplateBlockPreview );\n\nexport default function PostTemplateEdit( {\n\tclientId,\n\tcontext: {\n\t\tquery: {\n\t\t\tperPage,\n\t\t\toffset,\n\t\t\tpostType,\n\t\t\torder,\n\t\t\torderBy,\n\t\t\tauthor,\n\t\t\tsearch,\n\t\t\texclude,\n\t\t\tsticky,\n\t\t\tinherit,\n\t\t\ttaxQuery,\n\t\t\tparents,\n\t\t\tpages,\n\t\t\t// We gather extra query args to pass to the REST API call.\n\t\t\t// This way extenders of Query Loop can add their own query args,\n\t\t\t// and have accurate previews in the editor.\n\t\t\t// Noting though that these args should either be supported by the\n\t\t\t// REST API or be handled by custom REST filters like `rest_{$this->post_type}_query`.\n\t\t\t...restQueryArgs\n\t\t} = {},\n\t\tqueryContext = [ { page: 1 } ],\n\t\ttemplateSlug,\n\t\tdisplayLayout: { type: layoutType = 'flex', columns = 1 } = {},\n\t\tpreviewPostType,\n\t},\n} ) {\n\tconst [ { page } ] = queryContext;\n\tconst [ activeBlockContextId, setActiveBlockContextId ] = useState();\n\tconst { posts, blocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords, getTaxonomies } = select( coreStore );\n\t\t\tconst { getBlocks } = select( blockEditorStore );\n\t\t\tconst taxonomies = getTaxonomies( {\n\t\t\t\ttype: postType,\n\t\t\t\tper_page: -1,\n\t\t\t\tcontext: 'view',\n\t\t\t} );\n\t\t\tconst templateCategory =\n\t\t\t\tinherit &&\n\t\t\t\ttemplateSlug?.startsWith( 'category-' ) &&\n\t\t\t\tgetEntityRecords( 'taxonomy', 'category', {\n\t\t\t\t\tcontext: 'view',\n\t\t\t\t\tper_page: 1,\n\t\t\t\t\t_fields: [ 'id' ],\n\t\t\t\t\tslug: templateSlug.replace( 'category-', '' ),\n\t\t\t\t} );\n\t\t\tconst query = {\n\t\t\t\toffset: perPage ? perPage * ( page - 1 ) + offset : 0,\n\t\t\t\torder,\n\t\t\t\torderby: orderBy,\n\t\t\t};\n\t\t\t// There is no need to build the taxQuery if we inherit.\n\t\t\tif ( taxQuery && ! inherit ) {\n\t\t\t\t// We have to build the tax query for the REST API and use as\n\t\t\t\t// keys the taxonomies `rest_base` with the `term ids` as values.\n\t\t\t\tconst builtTaxQuery = Object.entries( taxQuery ).reduce(\n\t\t\t\t\t( accumulator, [ taxonomySlug, terms ] ) => {\n\t\t\t\t\t\tconst taxonomy = taxonomies?.find(\n\t\t\t\t\t\t\t( { slug } ) => slug === taxonomySlug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( taxonomy?.rest_base ) {\n\t\t\t\t\t\t\taccumulator[ taxonomy?.rest_base ] = terms;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t},\n\t\t\t\t\t{}\n\t\t\t\t);\n\t\t\t\tif ( !! Object.keys( builtTaxQuery ).length ) {\n\t\t\t\t\tObject.assign( query, builtTaxQuery );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( perPage ) {\n\t\t\t\tquery.per_page = perPage;\n\t\t\t}\n\t\t\tif ( author ) {\n\t\t\t\tquery.author = author;\n\t\t\t}\n\t\t\tif ( search ) {\n\t\t\t\tquery.search = search;\n\t\t\t}\n\t\t\tif ( exclude?.length ) {\n\t\t\t\tquery.exclude = exclude;\n\t\t\t}\n\t\t\tif ( parents?.length ) {\n\t\t\t\tquery.parent = parents;\n\t\t\t}\n\t\t\t// If sticky is not set, it will return all posts in the results.\n\t\t\t// If sticky is set to `only`, it will limit the results to sticky posts only.\n\t\t\t// If it is anything else, it will exclude sticky posts from results. For the record the value stored is `exclude`.\n\t\t\tif ( sticky ) {\n\t\t\t\tquery.sticky = sticky === 'only';\n\t\t\t}\n\t\t\t// If `inherit` is truthy, adjust conditionally the query to create a better preview.\n\t\t\tif ( inherit ) {\n\t\t\t\t// Change the post-type if needed.\n\t\t\t\tif ( templateSlug?.startsWith( 'archive-' ) ) {\n\t\t\t\t\tquery.postType = templateSlug.replace( 'archive-', '' );\n\t\t\t\t\tpostType = query.postType;\n\t\t\t\t} else if ( templateCategory ) {\n\t\t\t\t\tquery.categories = templateCategory[ 0 ]?.id;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// When we preview Query Loop blocks we should prefer the current\n\t\t\t// block's postType, which is passed through block context.\n\t\t\tconst usedPostType = previewPostType || postType;\n\t\t\treturn {\n\t\t\t\tposts: getEntityRecords( 'postType', usedPostType, {\n\t\t\t\t\t...query,\n\t\t\t\t\t...restQueryArgs,\n\t\t\t\t} ),\n\t\t\t\tblocks: getBlocks( clientId ),\n\t\t\t};\n\t\t},\n\t\t[\n\t\t\tperPage,\n\t\t\tpage,\n\t\t\toffset,\n\t\t\torder,\n\t\t\torderBy,\n\t\t\tclientId,\n\t\t\tauthor,\n\t\t\tsearch,\n\t\t\tpostType,\n\t\t\texclude,\n\t\t\tsticky,\n\t\t\tinherit,\n\t\t\ttemplateSlug,\n\t\t\ttaxQuery,\n\t\t\tparents,\n\t\t\trestQueryArgs,\n\t\t\tpreviewPostType,\n\t\t]\n\t);\n\tconst blockContexts = useMemo(\n\t\t() =>\n\t\t\tposts?.map( ( post ) => ( {\n\t\t\t\tpostType: post.type,\n\t\t\t\tpostId: post.id,\n\t\t\t} ) ),\n\t\t[ posts ]\n\t);\n\tconst hasLayoutFlex = layoutType === 'flex' && columns > 1;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t'is-flex-container': hasLayoutFlex,\n\t\t\t[ `columns-${ columns }` ]: hasLayoutFlex,\n\t\t} ),\n\t} );\n\n\tif ( ! posts ) {\n\t\treturn (\n\t\t\t<p { ...blockProps }>\n\t\t\t\t<Spinner />\n\t\t\t</p>\n\t\t);\n\t}\n\n\tif ( ! posts.length ) {\n\t\treturn <p { ...blockProps }> { __( 'No results found.' ) }</p>;\n\t}\n\n\t// To avoid flicker when switching active block contexts, a preview is rendered\n\t// for each block context, but the preview for the active block context is hidden.\n\t// This ensures that when it is displayed again, the cached rendering of the\n\t// block preview is used, instead of having to re-render the preview from scratch.\n\treturn (\n\t\t<ul { ...blockProps }>\n\t\t\t{ blockContexts &&\n\t\t\t\tblockContexts.map( ( blockContext ) => (\n\t\t\t\t\t<BlockContextProvider\n\t\t\t\t\t\tkey={ blockContext.postId }\n\t\t\t\t\t\tvalue={ blockContext }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ blockContext.postId ===\n\t\t\t\t\t\t( activeBlockContextId ||\n\t\t\t\t\t\t\tblockContexts[ 0 ]?.postId ) ? (\n\t\t\t\t\t\t\t<PostTemplateInnerBlocks />\n\t\t\t\t\t\t) : null }\n\t\t\t\t\t\t<MemoizedPostTemplateBlockPreview\n\t\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\t\tblockContextId={ blockContext.postId }\n\t\t\t\t\t\t\tsetActiveBlockContextId={ setActiveBlockContextId }\n\t\t\t\t\t\t\tisHidden={\n\t\t\t\t\t\t\t\tblockContext.postId ===\n\t\t\t\t\t\t\t\t( activeBlockContextId ||\n\t\t\t\t\t\t\t\t\tblockContexts[ 0 ]?.postId )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockContextProvider>\n\t\t\t\t) ) }\n\t\t</ul>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { layout } 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 save from './save';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon: layout,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function PostTemplateSave() {\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst postCategories = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path\n\t\t\td=\"M20 4H4v1.5h16V4zm-2 9h-3c-1.1 0-2 .9-2 2v3c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2zm.5 5c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3zM4 9.5h9V8H4v1.5zM9 13H6c-1.1 0-2 .9-2 2v3c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2zm.5 5c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3z\"\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t/>\n\t</SVG>\n);\n\nexport default postCategories;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { unescape } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentToolbar,\n\tInspectorControls,\n\tBlockControls,\n\tuseBlockProps,\n\tuseBlockDisplayInformation,\n\tRichText,\n} from '@wordpress/block-editor';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { Spinner, TextControl } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport usePostTerms from './use-post-terms';\n\n// Allowed formats for the prefix and suffix fields.\nconst ALLOWED_FORMATS = [\n\t'core/bold',\n\t'core/image',\n\t'core/italic',\n\t'core/link',\n\t'core/strikethrough',\n\t'core/text-color',\n];\n\nexport default function PostTermsEdit( {\n\tattributes,\n\tclientId,\n\tcontext,\n\tisSelected,\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst { term, textAlign, separator, prefix, suffix } = attributes;\n\tconst { postId, postType } = context;\n\n\tconst selectedTerm = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! term ) return {};\n\t\t\tconst { getTaxonomy } = select( coreStore );\n\t\t\tconst taxonomy = getTaxonomy( term );\n\t\t\treturn taxonomy?.visibility?.publicly_queryable ? taxonomy : {};\n\t\t},\n\t\t[ term ]\n\t);\n\tconst { postTerms, hasPostTerms, isLoading } = usePostTerms( {\n\t\tpostId,\n\t\tterm: selectedTerm,\n\t} );\n\tconst hasPost = postId && postType;\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t[ `taxonomy-${ term }` ]: term,\n\t\t} ),\n\t} );\n\n\tif ( ! hasPost || ! term ) {\n\t\treturn <div { ...blockProps }>{ blockInformation.title }</div>;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<AlignmentToolbar\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t<TextControl\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tlabel={ __( 'Separator' ) }\n\t\t\t\t\tvalue={ separator || '' }\n\t\t\t\t\tonChange={ ( nextValue ) => {\n\t\t\t\t\t\tsetAttributes( { separator: nextValue } );\n\t\t\t\t\t} }\n\t\t\t\t\thelp={ __( 'Enter character(s) used to separate terms.' ) }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ isLoading && <Spinner /> }\n\t\t\t\t{ ! isLoading && hasPostTerms && ( isSelected || prefix ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tallowedFormats={ ALLOWED_FORMATS }\n\t\t\t\t\t\tclassName=\"wp-block-post-terms__prefix\"\n\t\t\t\t\t\tmultiline={ false }\n\t\t\t\t\t\taria-label={ __( 'Prefix' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Prefix' ) + ' ' }\n\t\t\t\t\t\tvalue={ prefix }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { prefix: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isLoading &&\n\t\t\t\t\thasPostTerms &&\n\t\t\t\t\tpostTerms\n\t\t\t\t\t\t.map( ( postTerm ) => (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={ postTerm.id }\n\t\t\t\t\t\t\t\thref={ postTerm.link }\n\t\t\t\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ unescape( postTerm.name ) }\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t) )\n\t\t\t\t\t\t.reduce( ( prev, curr ) => (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ prev }\n\t\t\t\t\t\t\t\t<span className=\"wp-block-post-terms__separator\">\n\t\t\t\t\t\t\t\t\t{ separator || ' ' }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{ curr }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) ) }\n\t\t\t\t{ ! isLoading &&\n\t\t\t\t\t! hasPostTerms &&\n\t\t\t\t\t( selectedTerm?.labels?.no_terms ||\n\t\t\t\t\t\t__( 'Term items not found.' ) ) }\n\t\t\t\t{ ! isLoading && hasPostTerms && ( isSelected || suffix ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tallowedFormats={ ALLOWED_FORMATS }\n\t\t\t\t\t\tclassName=\"wp-block-post-terms__suffix\"\n\t\t\t\t\t\tmultiline={ false }\n\t\t\t\t\t\taria-label={ __( 'Suffix' ) }\n\t\t\t\t\t\tplaceholder={ ' ' + __( 'Suffix' ) }\n\t\t\t\t\t\tvalue={ suffix }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { suffix: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\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</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { postCategories, postTerms } from '@wordpress/icons';\n\nconst variationIconMap = {\n\tcategory: postCategories,\n\tpost_tag: postTerms,\n};\n\n// We add `icons` to categories and tags. The remaining ones use\n// the block's default icon.\nexport default function enhanceVariations( settings, name ) {\n\tif ( name !== 'core/post-terms' ) {\n\t\treturn settings;\n\t}\n\tconst variations = settings.variations.map( ( variation ) => ( {\n\t\t...variation,\n\t\t...( variationIconMap[ variation.name ] && {\n\t\t\ticon: variationIconMap[ variation.name ],\n\t\t} ),\n\t} ) );\n\treturn {\n\t\t...settings,\n\t\tvariations,\n\t};\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst postTerms = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M8.1 12.3c.1.1.3.3.5.3.2.1.4.1.6.1.2 0 .4 0 .6-.1.2-.1.4-.2.5-.3l3-3c.3-.3.5-.7.5-1.1 0-.4-.2-.8-.5-1.1L9.7 3.5c-.1-.2-.3-.3-.5-.3H5c-.4 0-.8.4-.8.8v4.2c0 .2.1.4.2.5l3.7 3.6zM5.8 4.8h3.1l3.4 3.4v.1l-3 3 .5.5-.7-.5-3.3-3.4V4.8zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z\" />\n\t</SVG>\n);\n\nexport default postTerms;\n","/**\n * WordPress dependencies\n */\nimport { postCategories as icon } from '@wordpress/icons';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport enhanceVariations from './hooks';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n};\n\nexport const init = () => {\n\taddFilter(\n\t\t'blocks.registerBlockType',\n\t\t'core/template-part',\n\t\tenhanceVariations\n\t);\n\n\treturn initBlock( { name, metadata, settings } );\n};\n","/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\nexport default function usePostTerms( { postId, term } ) {\n\tconst { slug } = term;\n\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst visible = term?.visibility?.publicly_queryable;\n\t\t\tif ( ! visible ) {\n\t\t\t\treturn {\n\t\t\t\t\tpostTerms: [],\n\t\t\t\t\t_isLoading: false,\n\t\t\t\t\thasPostTerms: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst { getEntityRecords, isResolving } = select( coreStore );\n\t\t\tconst taxonomyArgs = [\n\t\t\t\t'taxonomy',\n\t\t\t\tslug,\n\t\t\t\t{\n\t\t\t\t\tpost: postId,\n\t\t\t\t\tper_page: -1,\n\t\t\t\t\tcontext: 'view',\n\t\t\t\t},\n\t\t\t];\n\t\t\tconst terms = getEntityRecords( ...taxonomyArgs );\n\n\t\t\treturn {\n\t\t\t\tpostTerms: terms,\n\t\t\t\tisLoading: isResolving( 'getEntityRecords', taxonomyArgs ),\n\t\t\t\thasPostTerms: !! terms?.length,\n\t\t\t};\n\t\t},\n\t\t[ postId, term?.visibility?.publicly_queryable ]\n\t);\n}\n","/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\n\nconst v1 = {\n\tattributes: {\n\t\ttextAlign: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tlevel: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 2,\n\t\t},\n\t\tisLink: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: false,\n\t\t},\n\t\trel: {\n\t\t\ttype: 'string',\n\t\t\tattribute: 'rel',\n\t\t\tdefault: '',\n\t\t},\n\t\tlinkTarget: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '_self',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: [ 'wide', 'full' ],\n\t\thtml: false,\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t\tlink: true,\n\t\t},\n\t\tspacing: {\n\t\t\tmargin: true,\n\t\t},\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t},\n\t},\n\tsave() {\n\t\treturn null;\n\t},\n\tmigrate: migrateFontFamily,\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v1 ];\n","/**\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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tPlainText,\n} from '@wordpress/block-editor';\nimport { ToggleControl, TextControl, PanelBody } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEntityProp } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport HeadingLevelDropdown from '../heading/heading-level-dropdown';\nimport { useCanEditEntity } from '../utils/hooks';\n\nexport default function PostTitleEdit( {\n\tattributes: { level, textAlign, isLink, rel, linkTarget },\n\tsetAttributes,\n\tcontext: { postType, postId, queryId },\n} ) {\n\tconst TagName = 0 === level ? 'p' : 'h' + level;\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst userCanEdit = useCanEditEntity( 'postType', postType, postId );\n\tconst [ rawTitle = '', setTitle, fullTitle ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'title',\n\t\tpostId\n\t);\n\tconst [ link ] = useEntityProp( 'postType', postType, 'link', postId );\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tlet titleElement = (\n\t\t<TagName { ...blockProps }>{ __( 'Post Title' ) }</TagName>\n\t);\n\n\tif ( postType && postId ) {\n\t\ttitleElement =\n\t\t\tuserCanEdit && ! isDescendentOfQueryLoop ? (\n\t\t\t\t<PlainText\n\t\t\t\t\ttagName={ TagName }\n\t\t\t\t\tplaceholder={ __( 'No Title' ) }\n\t\t\t\t\tvalue={ rawTitle }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t__experimentalVersion={ 2 }\n\t\t\t\t\t{ ...blockProps }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<TagName\n\t\t\t\t\t{ ...blockProps }\n\t\t\t\t\tdangerouslySetInnerHTML={ { __html: fullTitle?.rendered } }\n\t\t\t\t/>\n\t\t\t);\n\t}\n\n\tif ( isLink && postType && postId ) {\n\t\ttitleElement =\n\t\t\tuserCanEdit && ! isDescendentOfQueryLoop ? (\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t<PlainText\n\t\t\t\t\t\ttagName=\"a\"\n\t\t\t\t\t\thref={ link }\n\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\t! rawTitle.length ? __( 'No Title' ) : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ rawTitle }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t__experimentalVersion={ 2 }\n\t\t\t\t\t/>\n\t\t\t\t</TagName>\n\t\t\t) : (\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t<a\n\t\t\t\t\t\thref={ link }\n\t\t\t\t\t\ttarget={ linkTarget }\n\t\t\t\t\t\trel={ rel }\n\t\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t__html: fullTitle?.rendered,\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</TagName>\n\t\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\tselectedLevel={ level }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Make title a link' ) }\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\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\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\t{ titleElement }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst preformatted = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v12zM7 16.5h6V15H7v1.5zm4-4h6V11h-6v1.5zM9 11H7v1.5h2V11zm6 5.5h2V15h-2v1.5z\" />\n\t</SVG>\n);\n\nexport default preformatted;\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/code', 'core/paragraph' ],\n\t\t\ttransform: ( { content, anchor } ) =>\n\t\t\t\tcreateBlock( 'core/preformatted', {\n\t\t\t\t\tcontent,\n\t\t\t\t\tanchor,\n\t\t\t\t} ),\n\t\t},\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tisMatch: ( node ) =>\n\t\t\t\tnode.nodeName === 'PRE' &&\n\t\t\t\t! (\n\t\t\t\t\tnode.children.length === 1 &&\n\t\t\t\t\tnode.firstChild.nodeName === 'CODE'\n\t\t\t\t),\n\t\t\tschema: ( { phrasingContentSchema } ) => ( {\n\t\t\t\tpre: {\n\t\t\t\t\tchildren: phrasingContentSchema,\n\t\t\t\t},\n\t\t\t} ),\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/paragraph' ],\n\t\t\ttransform: ( attributes ) =>\n\t\t\t\tcreateBlock( 'core/paragraph', attributes ),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/code' ],\n\t\t\ttransform: ( attributes ) => createBlock( 'core/code', attributes ),\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\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 + attributesToMerge.content,\n\t\t};\n\t},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\nexport default function PreformattedEdit( {\n\tattributes,\n\tmergeBlocks,\n\tsetAttributes,\n\tonRemove,\n\tstyle,\n} ) {\n\tconst { content } = attributes;\n\tconst blockProps = useBlockProps( { style } );\n\n\treturn (\n\t\t<RichText\n\t\t\ttagName=\"pre\"\n\t\t\tidentifier=\"content\"\n\t\t\tpreserveWhiteSpace\n\t\t\tvalue={ content }\n\t\t\tonChange={ ( nextContent ) => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tcontent: nextContent,\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tonRemove={ onRemove }\n\t\t\taria-label={ __( 'Preformatted text' ) }\n\t\t\tplaceholder={ __( 'Write preformatted text…' ) }\n\t\t\tonMerge={ mergeBlocks }\n\t\t\t{ ...blockProps }\n\t\t\t__unstablePastePlainText\n\t\t/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { content } = attributes;\n\n\treturn (\n\t\t<pre { ...useBlockProps.save() }>\n\t\t\t<RichText.Content value={ content } />\n\t\t</pre>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst pullquote = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M18 8H6c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2zm.5 6c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-4c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v4zM4 4v1.5h16V4H4zm0 16h16v-1.5H4V20z\" />\n\t</SVG>\n);\n\nexport default pullquote;\n","export const SOLID_COLOR_CLASS = `is-style-solid-color`;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { get, includes } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetColorClassName,\n\tgetColorObjectByAttributeValues,\n\tRichText,\n\tstore as blockEditorStore,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { select } from '@wordpress/data';\nimport {\n\tcreate,\n\treplace,\n\ttoHTMLString,\n\t__UNSTABLE_LINE_SEPARATOR,\n} from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { SOLID_COLOR_CLASS } from './shared';\n\nconst blockAttributes = {\n\tvalue: {\n\t\ttype: 'string',\n\t\tsource: 'html',\n\t\tselector: 'blockquote',\n\t\tmultiline: 'p',\n\t},\n\tcitation: {\n\t\ttype: 'string',\n\t\tsource: 'html',\n\t\tselector: 'cite',\n\t\tdefault: '',\n\t},\n\tmainColor: {\n\t\ttype: 'string',\n\t},\n\tcustomMainColor: {\n\t\ttype: 'string',\n\t},\n\ttextColor: {\n\t\ttype: 'string',\n\t},\n\tcustomTextColor: {\n\t\ttype: 'string',\n\t},\n};\n\nfunction parseBorderColor( styleString ) {\n\tif ( ! styleString ) {\n\t\treturn;\n\t}\n\tconst matches = styleString.match( /border-color:([^;]+)[;]?/ );\n\tif ( matches && matches[ 1 ] ) {\n\t\treturn matches[ 1 ];\n\t}\n}\n\nfunction multilineToInline( value ) {\n\treturn toHTMLString( {\n\t\tvalue: replace(\n\t\t\tcreate( { html: value, multilineTag: 'p' } ),\n\t\t\tnew RegExp( __UNSTABLE_LINE_SEPARATOR, 'g' ),\n\t\t\t'\\n'\n\t\t),\n\t} );\n}\n\nconst v5 = {\n\tattributes: {\n\t\tvalue: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'blockquote',\n\t\t\tmultiline: 'p',\n\t\t\t__experimentalRole: 'content',\n\t\t},\n\t\tcitation: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'cite',\n\t\t\tdefault: '',\n\t\t\t__experimentalRole: 'content',\n\t\t},\n\t\ttextAlign: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsave( { attributes } ) {\n\t\tconst { textAlign, citation, value } = attributes;\n\t\tconst shouldShowCitation = ! RichText.isEmpty( citation );\n\n\t\treturn (\n\t\t\t<figure\n\t\t\t\t{ ...useBlockProps.save( {\n\t\t\t\t\tclassName: classnames( {\n\t\t\t\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t\t\t} ),\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<blockquote>\n\t\t\t\t\t<RichText.Content value={ value } multiline />\n\t\t\t\t\t{ shouldShowCitation && (\n\t\t\t\t\t\t<RichText.Content tagName=\"cite\" value={ citation } />\n\t\t\t\t\t) }\n\t\t\t\t</blockquote>\n\t\t\t</figure>\n\t\t);\n\t},\n\tmigrate( { value, ...attributes } ) {\n\t\treturn {\n\t\t\tvalue: multilineToInline( value ),\n\t\t\t...attributes,\n\t\t};\n\t},\n};\n\n// TODO: this is ripe for a bit of a clean up according to the example in https://developer.wordpress.org/block-editor/reference-guides/block-api/block-deprecation/#example\n\nconst v4 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tmainColor,\n\t\t\tcustomMainColor,\n\t\t\tcustomTextColor,\n\t\t\ttextColor,\n\t\t\tvalue,\n\t\t\tcitation,\n\t\t\tclassName,\n\t\t} = attributes;\n\n\t\tconst isSolidColorStyle = includes( className, SOLID_COLOR_CLASS );\n\n\t\tlet figureClasses, figureStyles;\n\n\t\t// Is solid color style\n\t\tif ( isSolidColorStyle ) {\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tmainColor\n\t\t\t);\n\n\t\t\tfigureClasses = classnames( {\n\t\t\t\t'has-background': backgroundClass || customMainColor,\n\t\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t} );\n\n\t\t\tfigureStyles = {\n\t\t\t\tbackgroundColor: backgroundClass ? undefined : customMainColor,\n\t\t\t};\n\t\t\t// Is normal style and a custom color is being used ( we can set a style directly with its value)\n\t\t} else if ( customMainColor ) {\n\t\t\tfigureStyles = {\n\t\t\t\tborderColor: customMainColor,\n\t\t\t};\n\t\t}\n\n\t\tconst blockquoteTextColorClass = getColorClassName(\n\t\t\t'color',\n\t\t\ttextColor\n\t\t);\n\t\tconst blockquoteClasses = classnames( {\n\t\t\t'has-text-color': textColor || customTextColor,\n\t\t\t[ blockquoteTextColorClass ]: blockquoteTextColorClass,\n\t\t} );\n\n\t\tconst blockquoteStyles = blockquoteTextColorClass\n\t\t\t? undefined\n\t\t\t: { color: customTextColor };\n\n\t\treturn (\n\t\t\t<figure\n\t\t\t\t{ ...useBlockProps.save( {\n\t\t\t\t\tclassName: figureClasses,\n\t\t\t\t\tstyle: figureStyles,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<blockquote\n\t\t\t\t\tclassName={ blockquoteClasses }\n\t\t\t\t\tstyle={ blockquoteStyles }\n\t\t\t\t>\n\t\t\t\t\t<RichText.Content value={ value } multiline />\n\t\t\t\t\t{ ! RichText.isEmpty( citation ) && (\n\t\t\t\t\t\t<RichText.Content tagName=\"cite\" value={ citation } />\n\t\t\t\t\t) }\n\t\t\t\t</blockquote>\n\t\t\t</figure>\n\t\t);\n\t},\n\tmigrate( {\n\t\tvalue,\n\t\tclassName,\n\t\tmainColor,\n\t\tcustomMainColor,\n\t\tcustomTextColor,\n\t\t...attributes\n\t} ) {\n\t\tconst isSolidColorStyle = includes( className, SOLID_COLOR_CLASS );\n\t\tlet style;\n\n\t\tif ( customMainColor ) {\n\t\t\tif ( ! isSolidColorStyle ) {\n\t\t\t\t// Block supports: Set style.border.color if a deprecated block has a default style and a `customMainColor` attribute.\n\t\t\t\tstyle = {\n\t\t\t\t\tborder: {\n\t\t\t\t\t\tcolor: customMainColor,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\t// Block supports: Set style.color.background if a deprecated block has a solid style and a `customMainColor` attribute.\n\t\t\t\tstyle = {\n\t\t\t\t\tcolor: {\n\t\t\t\t\t\tbackground: customMainColor,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Block supports: Set style.color.text if a deprecated block has a `customTextColor` attribute.\n\t\tif ( customTextColor && style ) {\n\t\t\tstyle.color = {\n\t\t\t\t...style.color,\n\t\t\t\ttext: customTextColor,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tvalue: multilineToInline( value ),\n\t\t\tclassName,\n\t\t\tbackgroundColor: isSolidColorStyle ? mainColor : undefined,\n\t\t\tborderColor: isSolidColorStyle ? undefined : mainColor,\n\t\t\ttextAlign: isSolidColorStyle ? 'left' : undefined,\n\t\t\tstyle,\n\t\t\t...attributes,\n\t\t};\n\t},\n};\n\nconst v3 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t\t// figureStyle is an attribute that never existed.\n\t\t// We are using it as a way to access the styles previously applied to the figure.\n\t\tfigureStyle: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'figure',\n\t\t\tattribute: 'style',\n\t\t},\n\t},\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tmainColor,\n\t\t\tcustomMainColor,\n\t\t\ttextColor,\n\t\t\tcustomTextColor,\n\t\t\tvalue,\n\t\t\tcitation,\n\t\t\tclassName,\n\t\t\tfigureStyle,\n\t\t} = attributes;\n\n\t\tconst isSolidColorStyle = includes( className, SOLID_COLOR_CLASS );\n\n\t\tlet figureClasses, figureStyles;\n\n\t\t// Is solid color style\n\t\tif ( isSolidColorStyle ) {\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tmainColor\n\t\t\t);\n\n\t\t\tfigureClasses = classnames( {\n\t\t\t\t'has-background': backgroundClass || customMainColor,\n\t\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t} );\n\n\t\t\tfigureStyles = {\n\t\t\t\tbackgroundColor: backgroundClass ? undefined : customMainColor,\n\t\t\t};\n\t\t\t// Is normal style and a custom color is being used ( we can set a style directly with its value)\n\t\t} else if ( customMainColor ) {\n\t\t\tfigureStyles = {\n\t\t\t\tborderColor: customMainColor,\n\t\t\t};\n\t\t\t// If normal style and a named color are being used, we need to retrieve the color value to set the style,\n\t\t\t// as there is no expectation that themes create classes that set border colors.\n\t\t} else if ( mainColor ) {\n\t\t\t// Previously here we queried the color settings to know the color value\n\t\t\t// of a named color. This made the save function impure and the block was refactored,\n\t\t\t// because meanwhile a change in the editor made it impossible to query color settings in the save function.\n\t\t\t// Here instead of querying the color settings to know the color value, we retrieve the value\n\t\t\t// directly from the style previously serialized.\n\t\t\tconst borderColor = parseBorderColor( figureStyle );\n\t\t\tfigureStyles = {\n\t\t\t\tborderColor,\n\t\t\t};\n\t\t}\n\n\t\tconst blockquoteTextColorClass = getColorClassName(\n\t\t\t'color',\n\t\t\ttextColor\n\t\t);\n\t\tconst blockquoteClasses =\n\t\t\t( textColor || customTextColor ) &&\n\t\t\tclassnames( 'has-text-color', {\n\t\t\t\t[ blockquoteTextColorClass ]: blockquoteTextColorClass,\n\t\t\t} );\n\n\t\tconst blockquoteStyles = blockquoteTextColorClass\n\t\t\t? undefined\n\t\t\t: { color: customTextColor };\n\n\t\treturn (\n\t\t\t<figure className={ figureClasses } style={ figureStyles }>\n\t\t\t\t<blockquote\n\t\t\t\t\tclassName={ blockquoteClasses }\n\t\t\t\t\tstyle={ blockquoteStyles }\n\t\t\t\t>\n\t\t\t\t\t<RichText.Content value={ value } multiline />\n\t\t\t\t\t{ ! RichText.isEmpty( citation ) && (\n\t\t\t\t\t\t<RichText.Content tagName=\"cite\" value={ citation } />\n\t\t\t\t\t) }\n\t\t\t\t</blockquote>\n\t\t\t</figure>\n\t\t);\n\t},\n\tmigrate( {\n\t\tvalue,\n\t\tclassName,\n\t\tfigureStyle,\n\t\tmainColor,\n\t\tcustomMainColor,\n\t\tcustomTextColor,\n\t\t...attributes\n\t} ) {\n\t\tconst isSolidColorStyle = includes( className, SOLID_COLOR_CLASS );\n\t\tlet style;\n\n\t\tif ( customMainColor ) {\n\t\t\tif ( ! isSolidColorStyle ) {\n\t\t\t\t// Block supports: Set style.border.color if a deprecated block has a default style and a `customMainColor` attribute.\n\t\t\t\tstyle = {\n\t\t\t\t\tborder: {\n\t\t\t\t\t\tcolor: customMainColor,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\t// Block supports: Set style.color.background if a deprecated block has a solid style and a `customMainColor` attribute.\n\t\t\t\tstyle = {\n\t\t\t\t\tcolor: {\n\t\t\t\t\t\tbackground: customMainColor,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Block supports: Set style.color.text if a deprecated block has a `customTextColor` attribute.\n\t\tif ( customTextColor && style ) {\n\t\t\tstyle.color = {\n\t\t\t\t...style.color,\n\t\t\t\ttext: customTextColor,\n\t\t\t};\n\t\t}\n\t\t// If is the default style, and a main color is set,\n\t\t// migrate the main color value into a custom border color.\n\t\t// The custom border color value is retrieved by parsing the figure styles.\n\t\tif ( ! isSolidColorStyle && mainColor && figureStyle ) {\n\t\t\tconst borderColor = parseBorderColor( figureStyle );\n\t\t\tif ( borderColor ) {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: multilineToInline( value ),\n\t\t\t\t\t...attributes,\n\t\t\t\t\tclassName,\n\t\t\t\t\t// Block supports: Set style.border.color if a deprecated block has `mainColor`, inline border CSS and is not a solid color style.\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tborder: {\n\t\t\t\t\t\t\tcolor: borderColor,\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\treturn {\n\t\t\tvalue: multilineToInline( value ),\n\t\t\tclassName,\n\t\t\tbackgroundColor: isSolidColorStyle ? mainColor : undefined,\n\t\t\tborderColor: isSolidColorStyle ? undefined : mainColor,\n\t\t\ttextAlign: isSolidColorStyle ? 'left' : undefined,\n\t\t\tstyle,\n\t\t\t...attributes,\n\t\t};\n\t},\n};\n\nconst v2 = {\n\tattributes: blockAttributes,\n\tsave( { attributes } ) {\n\t\tconst {\n\t\t\tmainColor,\n\t\t\tcustomMainColor,\n\t\t\ttextColor,\n\t\t\tcustomTextColor,\n\t\t\tvalue,\n\t\t\tcitation,\n\t\t\tclassName,\n\t\t} = attributes;\n\t\tconst isSolidColorStyle = includes( className, SOLID_COLOR_CLASS );\n\n\t\tlet figureClass, figureStyles;\n\t\t// Is solid color style\n\t\tif ( isSolidColorStyle ) {\n\t\t\tfigureClass = getColorClassName( 'background-color', mainColor );\n\t\t\tif ( ! figureClass ) {\n\t\t\t\tfigureStyles = {\n\t\t\t\t\tbackgroundColor: customMainColor,\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Is normal style and a custom color is being used ( we can set a style directly with its value)\n\t\t} else if ( customMainColor ) {\n\t\t\tfigureStyles = {\n\t\t\t\tborderColor: customMainColor,\n\t\t\t};\n\t\t\t// Is normal style and a named color is being used, we need to retrieve the color value to set the style,\n\t\t\t// as there is no expectation that themes create classes that set border colors.\n\t\t} else if ( mainColor ) {\n\t\t\tconst colors = get(\n\t\t\t\tselect( blockEditorStore ).getSettings(),\n\t\t\t\t[ 'colors' ],\n\t\t\t\t[]\n\t\t\t);\n\t\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\t\tcolors,\n\t\t\t\tmainColor\n\t\t\t);\n\t\t\tfigureStyles = {\n\t\t\t\tborderColor: colorObject.color,\n\t\t\t};\n\t\t}\n\n\t\tconst blockquoteTextColorClass = getColorClassName(\n\t\t\t'color',\n\t\t\ttextColor\n\t\t);\n\t\tconst blockquoteClasses =\n\t\t\ttextColor || customTextColor\n\t\t\t\t? classnames( 'has-text-color', {\n\t\t\t\t\t\t[ blockquoteTextColorClass ]: blockquoteTextColorClass,\n\t\t\t\t  } )\n\t\t\t\t: undefined;\n\t\tconst blockquoteStyle = blockquoteTextColorClass\n\t\t\t? undefined\n\t\t\t: { color: customTextColor };\n\t\treturn (\n\t\t\t<figure className={ figureClass } style={ figureStyles }>\n\t\t\t\t<blockquote\n\t\t\t\t\tclassName={ blockquoteClasses }\n\t\t\t\t\tstyle={ blockquoteStyle }\n\t\t\t\t>\n\t\t\t\t\t<RichText.Content value={ value } multiline />\n\t\t\t\t\t{ ! RichText.isEmpty( citation ) && (\n\t\t\t\t\t\t<RichText.Content tagName=\"cite\" value={ citation } />\n\t\t\t\t\t) }\n\t\t\t\t</blockquote>\n\t\t\t</figure>\n\t\t);\n\t},\n\tmigrate( {\n\t\tvalue,\n\t\tclassName,\n\t\tmainColor,\n\t\tcustomMainColor,\n\t\tcustomTextColor,\n\t\t...attributes\n\t} ) {\n\t\tconst isSolidColorStyle = includes( className, SOLID_COLOR_CLASS );\n\t\tlet style = {};\n\n\t\tif ( customMainColor ) {\n\t\t\tif ( ! isSolidColorStyle ) {\n\t\t\t\t// Block supports: Set style.border.color if a deprecated block has a default style and a `customMainColor` attribute.\n\t\t\t\tstyle = {\n\t\t\t\t\tborder: {\n\t\t\t\t\t\tcolor: customMainColor,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\t// Block supports: Set style.color.background if a deprecated block has a solid style and a `customMainColor` attribute.\n\t\t\t\tstyle = {\n\t\t\t\t\tcolor: {\n\t\t\t\t\t\tbackground: customMainColor,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Block supports: Set style.color.text if a deprecated block has a `customTextColor` attribute.\n\t\tif ( customTextColor && style ) {\n\t\t\tstyle.color = {\n\t\t\t\t...style.color,\n\t\t\t\ttext: customTextColor,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tvalue: multilineToInline( value ),\n\t\t\tclassName,\n\t\t\tbackgroundColor: isSolidColorStyle ? mainColor : undefined,\n\t\t\tborderColor: isSolidColorStyle ? undefined : mainColor,\n\t\t\ttextAlign: isSolidColorStyle ? 'left' : undefined,\n\t\t\tstyle,\n\t\t\t...attributes,\n\t\t};\n\t},\n};\n\nconst v1 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t},\n\tsave( { attributes } ) {\n\t\tconst { value, citation } = attributes;\n\t\treturn (\n\t\t\t<blockquote>\n\t\t\t\t<RichText.Content value={ value } multiline />\n\t\t\t\t{ ! RichText.isEmpty( citation ) && (\n\t\t\t\t\t<RichText.Content tagName=\"cite\" value={ citation } />\n\t\t\t\t) }\n\t\t\t</blockquote>\n\t\t);\n\t},\n\tmigrate( { value, ...attributes } ) {\n\t\treturn {\n\t\t\tvalue: multilineToInline( value ),\n\t\t\t...attributes,\n\t\t};\n\t},\n};\n\nconst v0 = {\n\tattributes: {\n\t\t...blockAttributes,\n\t\tcitation: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'footer',\n\t\t},\n\t\talign: {\n\t\t\ttype: 'string',\n\t\t\tdefault: 'none',\n\t\t},\n\t},\n\n\tsave( { attributes } ) {\n\t\tconst { value, citation, align } = attributes;\n\n\t\treturn (\n\t\t\t<blockquote className={ `align${ align }` }>\n\t\t\t\t<RichText.Content value={ value } multiline />\n\t\t\t\t{ ! RichText.isEmpty( citation ) && (\n\t\t\t\t\t<RichText.Content tagName=\"footer\" value={ citation } />\n\t\t\t\t) }\n\t\t\t</blockquote>\n\t\t);\n\t},\n\tmigrate( { value, ...attributes } ) {\n\t\treturn {\n\t\t\tvalue: multilineToInline( value ),\n\t\t\t...attributes,\n\t\t};\n\t},\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v5, v4, v3, v2, v1, v0 ];\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tRichText,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { Figure } from './figure';\nimport { BlockQuote } from './blockquote';\n\nconst isWebPlatform = Platform.OS === 'web';\n\nfunction PullQuoteEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tinsertBlocksAfter,\n} ) {\n\tconst { textAlign, citation, value } = attributes;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\tconst shouldShowCitation = ! RichText.isEmpty( citation ) || isSelected;\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<Figure { ...blockProps }>\n\t\t\t\t<BlockQuote>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tidentifier=\"value\"\n\t\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ ( nextValue ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tvalue: nextValue,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\taria-label={ __( 'Pullquote text' ) }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\t// translators: placeholder text used for the quote\n\t\t\t\t\t\t\t__( 'Add quote' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttextAlign=\"center\"\n\t\t\t\t\t/>\n\t\t\t\t\t{ shouldShowCitation && (\n\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\tidentifier=\"citation\"\n\t\t\t\t\t\t\ttagName={ isWebPlatform ? 'cite' : undefined }\n\t\t\t\t\t\t\tstyle={ { display: 'block' } }\n\t\t\t\t\t\t\tvalue={ citation }\n\t\t\t\t\t\t\taria-label={ __( 'Pullquote citation text' ) }\n\t\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\t\t// translators: placeholder text used for the citation\n\t\t\t\t\t\t\t\t__( 'Add citation' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={ ( nextCitation ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tcitation: nextCitation,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName=\"wp-block-pullquote__citation\"\n\t\t\t\t\t\t\t__unstableMobileNoFocusOnMount\n\t\t\t\t\t\t\ttextAlign=\"center\"\n\t\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\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</BlockQuote>\n\t\t\t</Figure>\n\t\t</>\n\t);\n}\n\nexport default PullQuoteEdit;\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { create, join, toHTMLString } from '@wordpress/rich-text';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ 'core/paragraph' ],\n\t\t\ttransform: ( attributes ) => {\n\t\t\t\treturn createBlock( 'core/pullquote', {\n\t\t\t\t\tvalue: toHTMLString( {\n\t\t\t\t\t\tvalue: join(\n\t\t\t\t\t\t\tattributes.map( ( { content } ) =>\n\t\t\t\t\t\t\t\tcreate( { html: content } )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'\\n'\n\t\t\t\t\t\t),\n\t\t\t\t\t} ),\n\t\t\t\t\tanchor: attributes.anchor,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/heading' ],\n\t\t\ttransform: ( { content, anchor } ) => {\n\t\t\t\treturn createBlock( 'core/pullquote', {\n\t\t\t\t\tvalue: content,\n\t\t\t\t\tanchor,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/paragraph' ],\n\t\t\ttransform: ( { value, citation } ) => {\n\t\t\t\tconst paragraphs = [];\n\t\t\t\tif ( value ) {\n\t\t\t\t\tparagraphs.push(\n\t\t\t\t\t\tcreateBlock( 'core/paragraph', {\n\t\t\t\t\t\t\tcontent: value,\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif ( citation ) {\n\t\t\t\t\tparagraphs.push(\n\t\t\t\t\t\tcreateBlock( 'core/paragraph', {\n\t\t\t\t\t\t\tcontent: citation,\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif ( paragraphs.length === 0 ) {\n\t\t\t\t\treturn createBlock( 'core/paragraph', {\n\t\t\t\t\t\tcontent: '',\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn paragraphs;\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/heading' ],\n\t\t\ttransform: ( { value, citation } ) => {\n\t\t\t\t// If there is no pullquote content, use the citation as the\n\t\t\t\t// content of the resulting heading. A nonexistent citation\n\t\t\t\t// will result in an empty heading.\n\t\t\t\tif ( ! value ) {\n\t\t\t\t\treturn createBlock( 'core/heading', {\n\t\t\t\t\t\tcontent: citation,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\tconst headingBlock = createBlock( 'core/heading', {\n\t\t\t\t\tcontent: value,\n\t\t\t\t} );\n\t\t\t\tif ( ! citation ) {\n\t\t\t\t\treturn headingBlock;\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\theadingBlock,\n\t\t\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\t\t\tcontent: citation,\n\t\t\t\t\t} ),\n\t\t\t\t];\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\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","export const Figure = 'figure';\n","export const BlockQuote = 'blockquote';\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { textAlign, citation, value } = attributes;\n\tconst shouldShowCitation = ! RichText.isEmpty( citation );\n\n\treturn (\n\t\t<figure\n\t\t\t{ ...useBlockProps.save( {\n\t\t\t\tclassName: classnames( {\n\t\t\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t\t} ),\n\t\t\t} ) }\n\t\t>\n\t\t\t<blockquote>\n\t\t\t\t<RichText.Content tagName=\"p\" value={ value } />\n\t\t\t\t{ shouldShowCitation && (\n\t\t\t\t\t<RichText.Content tagName=\"cite\" value={ citation } />\n\t\t\t\t) }\n\t\t\t</blockquote>\n\t\t</figure>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst loop = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M18.1823 11.6392C18.1823 13.0804 17.0139 14.2487 15.5727 14.2487C14.3579 14.2487 13.335 13.4179 13.0453 12.2922L13.0377 12.2625L13.0278 12.2335L12.3985 10.377L12.3942 10.3785C11.8571 8.64997 10.246 7.39405 8.33961 7.39405C5.99509 7.39405 4.09448 9.29465 4.09448 11.6392C4.09448 13.9837 5.99509 15.8843 8.33961 15.8843C8.88499 15.8843 9.40822 15.781 9.88943 15.5923L9.29212 14.0697C8.99812 14.185 8.67729 14.2487 8.33961 14.2487C6.89838 14.2487 5.73003 13.0804 5.73003 11.6392C5.73003 10.1979 6.89838 9.02959 8.33961 9.02959C9.55444 9.02959 10.5773 9.86046 10.867 10.9862L10.8772 10.9836L11.4695 12.7311C11.9515 14.546 13.6048 15.8843 15.5727 15.8843C17.9172 15.8843 19.8178 13.9837 19.8178 11.6392C19.8178 9.29465 17.9172 7.39404 15.5727 7.39404C15.0287 7.39404 14.5066 7.4968 14.0264 7.6847L14.6223 9.20781C14.9158 9.093 15.2358 9.02959 15.5727 9.02959C17.0139 9.02959 18.1823 10.1979 18.1823 11.6392Z\" />\n\t</SVG>\n);\n\nexport default loop;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst settings = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M14.5 13.8c-1.1 0-2.1.7-2.4 1.8H4V17h8.1c.3 1 1.3 1.8 2.4 1.8s2.1-.7 2.4-1.8H20v-1.5h-3.1c-.3-1-1.3-1.7-2.4-1.7zM11.9 7c-.3-1-1.3-1.8-2.4-1.8S7.4 6 7.1 7H4v1.5h3.1c.3 1 1.3 1.8 2.4 1.8s2.1-.7 2.4-1.8H20V7h-8.1z\" />\n\t</SVG>\n);\n\nexport default settings;\n","/**\n * WordPress dependencies\n */\nimport {\n\tToolbarGroup,\n\tDropdown,\n\tToolbarButton,\n\tBaseControl,\n\t__experimentalNumberControl as NumberControl,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { settings, list, grid } from '@wordpress/icons';\nimport { useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\nexport default function QueryToolbar( {\n\tattributes: { query, displayLayout },\n\tsetQuery,\n\tsetDisplayLayout,\n\topenPatternSelectionModal,\n\tname,\n\tclientId,\n} ) {\n\tconst hasPatterns = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\t__experimentalGetPatternsByBlockTypes,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\treturn !! __experimentalGetPatternsByBlockTypes(\n\t\t\t\tname,\n\t\t\t\trootClientId\n\t\t\t).length;\n\t\t},\n\t\t[ name, clientId ]\n\t);\n\tconst maxPageInputId = useInstanceId(\n\t\tQueryToolbar,\n\t\t'blocks-query-pagination-max-page-input'\n\t);\n\tconst displayLayoutControls = [\n\t\t{\n\t\t\ticon: list,\n\t\t\ttitle: __( 'List view' ),\n\t\t\tonClick: () => setDisplayLayout( { type: 'list' } ),\n\t\t\tisActive: displayLayout?.type === 'list',\n\t\t},\n\t\t{\n\t\t\ticon: grid,\n\t\t\ttitle: __( 'Grid view' ),\n\t\t\tonClick: () =>\n\t\t\t\tsetDisplayLayout( {\n\t\t\t\t\ttype: 'flex',\n\t\t\t\t\tcolumns: displayLayout?.columns || 3,\n\t\t\t\t} ),\n\t\t\tisActive: displayLayout?.type === 'flex',\n\t\t},\n\t];\n\treturn (\n\t\t<>\n\t\t\t{ ! query.inherit && (\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<Dropdown\n\t\t\t\t\t\tcontentClassName=\"block-library-query-toolbar__popover\"\n\t\t\t\t\t\trenderToggle={ ( { onToggle } ) => (\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\ticon={ settings }\n\t\t\t\t\t\t\t\tlabel={ __( 'Display settings' ) }\n\t\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\trenderContent={ () => (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<BaseControl>\n\t\t\t\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\t\t\t\t__unstableInputWidth=\"60px\"\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Items per Page' ) }\n\t\t\t\t\t\t\t\t\t\tlabelPosition=\"edge\"\n\t\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\t\tmax={ 100 }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tisNaN( value ) ||\n\t\t\t\t\t\t\t\t\t\t\t\tvalue < 1 ||\n\t\t\t\t\t\t\t\t\t\t\t\tvalue > 100\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsetQuery( {\n\t\t\t\t\t\t\t\t\t\t\t\tperPage: value,\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tstep=\"1\"\n\t\t\t\t\t\t\t\t\t\tvalue={ query.perPage }\n\t\t\t\t\t\t\t\t\t\tisDragEnabled={ false }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t\t\t\t<BaseControl>\n\t\t\t\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\t\t\t\t__unstableInputWidth=\"60px\"\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Offset' ) }\n\t\t\t\t\t\t\t\t\t\tlabelPosition=\"edge\"\n\t\t\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\t\t\tmax={ 100 }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tisNaN( value ) ||\n\t\t\t\t\t\t\t\t\t\t\t\tvalue < 0 ||\n\t\t\t\t\t\t\t\t\t\t\t\tvalue > 100\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsetQuery( { offset: value } );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tstep=\"1\"\n\t\t\t\t\t\t\t\t\t\tvalue={ query.offset }\n\t\t\t\t\t\t\t\t\t\tisDragEnabled={ false }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t\t\t\t<BaseControl\n\t\t\t\t\t\t\t\t\tid={ maxPageInputId }\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Limit the pages you want to show, even if the query has more results. To show all pages use 0 (zero).'\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\t\t<NumberControl\n\t\t\t\t\t\t\t\t\t\tid={ maxPageInputId }\n\t\t\t\t\t\t\t\t\t\t__unstableInputWidth=\"60px\"\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Max page to show' ) }\n\t\t\t\t\t\t\t\t\t\tlabelPosition=\"edge\"\n\t\t\t\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( isNaN( value ) || value < 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsetQuery( { pages: value } );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tstep=\"1\"\n\t\t\t\t\t\t\t\t\t\tvalue={ query.pages }\n\t\t\t\t\t\t\t\t\t\tisDragEnabled={ false }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</BaseControl>\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</ToolbarGroup>\n\t\t\t) }\n\t\t\t{ hasPatterns && (\n\t\t\t\t<ToolbarGroup className=\"wp-block-template-part__block-control-group\">\n\t\t\t\t\t<ToolbarButton onClick={ openPatternSelectionModal }>\n\t\t\t\t\t\t{ __( 'Replace' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</ToolbarGroup>\n\t\t\t) }\n\t\t\t<ToolbarGroup controls={ displayLayoutControls } />\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nconst orderOptions = [\n\t{\n\t\tlabel: __( 'Newest to oldest' ),\n\t\tvalue: 'date/desc',\n\t},\n\t{\n\t\tlabel: __( 'Oldest to newest' ),\n\t\tvalue: 'date/asc',\n\t},\n\t{\n\t\t/* translators: label for ordering posts by title in ascending order */\n\t\tlabel: __( 'A → Z' ),\n\t\tvalue: 'title/asc',\n\t},\n\t{\n\t\t/* translators: label for ordering posts by title in descending order */\n\t\tlabel: __( 'Z → A' ),\n\t\tvalue: 'title/desc',\n\t},\n];\nfunction OrderControl( { order, orderBy, onChange } ) {\n\treturn (\n\t\t<SelectControl\n\t\t\tlabel={ __( 'Order by' ) }\n\t\t\tvalue={ `${ orderBy }/${ order }` }\n\t\t\toptions={ orderOptions }\n\t\t\tonChange={ ( value ) => {\n\t\t\t\tconst [ newOrderBy, newOrder ] = value.split( '/' );\n\t\t\t\tonChange( { order: newOrder, orderBy: newOrderBy } );\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nexport default OrderControl;\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { cloneBlock, store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { name as queryLoopName } from './block.json';\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id   The entity's id.\n * @property {string}        name The entity's name.\n */\n\n/**\n * The object used in Query block that contains info and helper mappings\n * from an array of IHasNameAndId objects.\n *\n * @typedef {Object} QueryEntitiesInfo\n * @property {IHasNameAndId[]}               entities  The array of entities.\n * @property {Object<string, IHasNameAndId>} mapById   Object mapping with the id as key and the entity as value.\n * @property {Object<string, IHasNameAndId>} mapByName Object mapping with the name as key and the entity as value.\n * @property {string[]}                      names     Array with the entities' names.\n */\n\n/**\n * Returns a helper object with mapping from Objects that implement\n * the `IHasNameAndId` interface. The returned object is used for\n * integration with `FormTokenField` component.\n *\n * @param {IHasNameAndId[]} entities The entities to extract of helper object.\n * @return {QueryEntitiesInfo} The object with the entities information.\n */\nexport const getEntitiesInfo = ( entities ) => {\n\tconst mapping = entities?.reduce(\n\t\t( accumulator, entity ) => {\n\t\t\tconst { mapById, mapByName, names } = accumulator;\n\t\t\tmapById[ entity.id ] = entity;\n\t\t\tmapByName[ entity.name ] = entity;\n\t\t\tnames.push( entity.name );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ mapById: {}, mapByName: {}, names: [] }\n\t);\n\treturn {\n\t\tentities,\n\t\t...mapping,\n\t};\n};\n\n/**\n * Helper util to map records to add a `name` prop from a\n * provided path, in order to handle all entities in the same\n * fashion(implementing`IHasNameAndId` interface).\n *\n * @param {Object[]} entities The array of entities.\n * @param {string}   path     The path to map a `name` property from the entity.\n * @return {IHasNameAndId[]} An array of enitities that now implement the `IHasNameAndId` interface.\n */\nexport const mapToIHasNameAndId = ( entities, path ) => {\n\treturn ( entities || [] ).map( ( entity ) => ( {\n\t\t...entity,\n\t\tname: decodeEntities( get( entity, path ) ),\n\t} ) );\n};\n\n/**\n * Returns a helper object that contains:\n * 1. An `options` object from the available post types, to be passed to a `SelectControl`.\n * 2. A helper map with available taxonomies per post type.\n *\n * @return {Object} The helper object related to post types.\n */\nexport const usePostTypes = () => {\n\tconst postTypes = useSelect( ( select ) => {\n\t\tconst { getPostTypes } = select( coreStore );\n\t\tconst excludedPostTypes = [ 'attachment' ];\n\t\tconst filteredPostTypes = getPostTypes( { per_page: -1 } )?.filter(\n\t\t\t( { viewable, slug } ) =>\n\t\t\t\tviewable && ! excludedPostTypes.includes( slug )\n\t\t);\n\t\treturn filteredPostTypes;\n\t}, [] );\n\tconst postTypesTaxonomiesMap = useMemo( () => {\n\t\tif ( ! postTypes?.length ) return;\n\t\treturn postTypes.reduce( ( accumulator, type ) => {\n\t\t\taccumulator[ type.slug ] = type.taxonomies;\n\t\t\treturn accumulator;\n\t\t}, {} );\n\t}, [ postTypes ] );\n\tconst postTypesSelectOptions = useMemo(\n\t\t() =>\n\t\t\t( postTypes || [] ).map( ( { labels, slug } ) => ( {\n\t\t\t\tlabel: labels.singular_name,\n\t\t\t\tvalue: slug,\n\t\t\t} ) ),\n\t\t[ postTypes ]\n\t);\n\treturn { postTypesTaxonomiesMap, postTypesSelectOptions };\n};\n\n/**\n * Hook that returns the taxonomies associated with a specific post type.\n *\n * @param {string} postType The post type from which to retrieve the associated taxonomies.\n * @return {Object[]} An array of the associated taxonomies.\n */\nexport const useTaxonomies = ( postType ) => {\n\tconst taxonomies = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getTaxonomies } = select( coreStore );\n\t\t\tconst filteredTaxonomies = getTaxonomies( {\n\t\t\t\ttype: postType,\n\t\t\t\tper_page: -1,\n\t\t\t\tcontext: 'view',\n\t\t\t} );\n\t\t\treturn filteredTaxonomies;\n\t\t},\n\t\t[ postType ]\n\t);\n\treturn taxonomies;\n};\n\n/**\n * Hook that returns whether a specific post type is hierarchical.\n *\n * @param {string} postType The post type to check.\n * @return {boolean} Whether a specific post type is hierarchical.\n */\nexport function useIsPostTypeHierarchical( postType ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst type = select( coreStore ).getPostType( postType );\n\t\t\treturn type?.viewable && type?.hierarchical;\n\t\t},\n\t\t[ postType ]\n\t);\n}\n\n/**\n * Hook that returns the query properties' names defined by the active\n * block variation, to determine which block's filters to show.\n *\n * @param {Object} attributes Block attributes.\n * @return {string[]} An array of the query attributes.\n */\nexport function useAllowedControls( attributes ) {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( blocksStore ).getActiveBlockVariation(\n\t\t\t\tqueryLoopName,\n\t\t\t\tattributes\n\t\t\t)?.allowedControls,\n\n\t\t[ attributes ]\n\t);\n}\nexport function isControlAllowed( allowedControls, key ) {\n\t// Every controls is allowed if the list is not defined.\n\tif ( ! allowedControls ) {\n\t\treturn true;\n\t}\n\treturn allowedControls.includes( key );\n}\n\n/**\n * Clones a pattern's blocks and then recurses over that list of blocks,\n * transforming them to retain some `query` attribute properties.\n * For now we retain the `postType` and `inherit` properties as they are\n * fundamental for the expected functionality of the block and don't affect\n * its design and presentation.\n *\n * Returns the cloned/transformed blocks and array of existing Query Loop\n * client ids for further manipulation, in order to avoid multiple recursions.\n *\n * @param {WPBlock[]}        blocks               The list of blocks to look through and transform(mutate).\n * @param {Record<string,*>} queryBlockAttributes The existing Query Loop's attributes.\n * @return {{ newBlocks: WPBlock[], queryClientIds: string[] }} An object with the cloned/transformed blocks and all the Query Loop clients from these blocks.\n */\nexport const getTransformedBlocksFromPattern = (\n\tblocks,\n\tqueryBlockAttributes\n) => {\n\tconst {\n\t\tquery: { postType, inherit },\n\t} = queryBlockAttributes;\n\tconst clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) );\n\tconst queryClientIds = [];\n\tconst blocksQueue = [ ...clonedBlocks ];\n\twhile ( blocksQueue.length > 0 ) {\n\t\tconst block = blocksQueue.shift();\n\t\tif ( block.name === 'core/query' ) {\n\t\t\tblock.attributes.query = {\n\t\t\t\t...block.attributes.query,\n\t\t\t\tpostType,\n\t\t\t\tinherit,\n\t\t\t};\n\t\t\tqueryClientIds.push( block.clientId );\n\t\t}\n\t\tblock.innerBlocks?.forEach( ( innerBlock ) => {\n\t\t\tblocksQueue.push( innerBlock );\n\t\t} );\n\t}\n\treturn { newBlocks: clonedBlocks, queryClientIds };\n};\n\n/**\n * Helper hook that determines if there is an active variation of the block\n * and if there are available specific patterns for this variation.\n * If there are, these patterns are going to be the only ones suggested to\n * the user in setup and replace flow, without including the default ones\n * for Query Loop.\n *\n * If there are no such patterns, the default ones for Query Loop are going\n * to be suggested.\n *\n * @param {string} clientId   The block's client ID.\n * @param {Object} attributes The block's attributes.\n * @return {string} The block name to be used in the patterns suggestions.\n */\nexport function useBlockNameForPatterns( clientId, attributes ) {\n\tconst activeVariationName = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blocksStore ).getActiveBlockVariation(\n\t\t\t\tqueryLoopName,\n\t\t\t\tattributes\n\t\t\t)?.name,\n\n\t\t[ attributes ]\n\t);\n\tconst blockName = `${ queryLoopName }/${ activeVariationName }`;\n\tconst activeVariationPatterns = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! activeVariationName ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\t__experimentalGetPatternsByBlockTypes,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\treturn __experimentalGetPatternsByBlockTypes(\n\t\t\t\tblockName,\n\t\t\t\trootClientId\n\t\t\t);\n\t\t},\n\t\t[ clientId, activeVariationName ]\n\t);\n\treturn activeVariationPatterns?.length ? blockName : queryLoopName;\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { FormTokenField } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getEntitiesInfo } from '../../utils';\n\nconst AUTHORS_QUERY = {\n\twho: 'authors',\n\tper_page: -1,\n\t_fields: 'id,name',\n\tcontext: 'view',\n};\n\nfunction AuthorControl( { value, onChange } ) {\n\tconst authorsList = useSelect( ( select ) => {\n\t\tconst { getUsers } = select( coreStore );\n\t\treturn getUsers( AUTHORS_QUERY );\n\t}, [] );\n\n\tif ( ! authorsList ) {\n\t\treturn null;\n\t}\n\tconst authorsInfo = getEntitiesInfo( authorsList );\n\t/**\n\t * We need to normalize the value because the block operates on a\n\t * comma(`,`) separated string value and `FormTokenFiels` needs an\n\t * array.\n\t */\n\tconst normalizedValue = ! value ? [] : value.toString().split( ',' );\n\t// Returns only the existing authors ids. This prevents the component\n\t// from crashing in the editor, when non existing ids are provided.\n\tconst sanitizedValue = normalizedValue.reduce(\n\t\t( accumulator, authorId ) => {\n\t\t\tconst author = authorsInfo.mapById[ authorId ];\n\t\t\tif ( author ) {\n\t\t\t\taccumulator.push( {\n\t\t\t\t\tid: authorId,\n\t\t\t\t\tvalue: author.name,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\n\tconst getIdByValue = ( entitiesMappedByName, authorValue ) => {\n\t\tconst id = authorValue?.id || entitiesMappedByName[ authorValue ]?.id;\n\t\tif ( id ) return id;\n\t};\n\tconst onAuthorChange = ( newValue ) => {\n\t\tconst ids = Array.from(\n\t\t\tnewValue.reduce( ( accumulator, author ) => {\n\t\t\t\t// Verify that new values point to existing entities.\n\t\t\t\tconst id = getIdByValue( authorsInfo.mapByName, author );\n\t\t\t\tif ( id ) accumulator.add( id );\n\t\t\t\treturn accumulator;\n\t\t\t}, new Set() )\n\t\t);\n\t\tonChange( { author: ids.join( ',' ) } );\n\t};\n\treturn (\n\t\t<FormTokenField\n\t\t\tlabel={ __( 'Authors' ) }\n\t\t\tvalue={ sanitizedValue }\n\t\t\tsuggestions={ authorsInfo.names }\n\t\t\tonChange={ onAuthorChange }\n\t\t\t__experimentalShowHowTo={ false }\n\t\t/>\n\t);\n}\n\nexport default AuthorControl;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { FormTokenField } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useEffect, useMemo } from '@wordpress/element';\nimport { useDebounce } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getEntitiesInfo, mapToIHasNameAndId } from '../../utils';\n\nconst EMPTY_ARRAY = [];\nconst BASE_QUERY = {\n\torder: 'asc',\n\t_fields: 'id,title',\n\tcontext: 'view',\n};\n\nfunction ParentControl( { parents, postType, onChange } ) {\n\tconst [ search, setSearch ] = useState( '' );\n\tconst [ value, setValue ] = useState( EMPTY_ARRAY );\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tconst debouncedSearch = useDebounce( setSearch, 250 );\n\tconst { searchResults, searchHasResolved } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! search ) {\n\t\t\t\treturn { searchResults: EMPTY_ARRAY, searchHasResolved: true };\n\t\t\t}\n\t\t\tconst { getEntityRecords, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst selectorArgs = [\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\t{\n\t\t\t\t\t...BASE_QUERY,\n\t\t\t\t\tsearch,\n\t\t\t\t\torderby: 'relevance',\n\t\t\t\t\texclude: parents,\n\t\t\t\t\tper_page: 20,\n\t\t\t\t},\n\t\t\t];\n\t\t\treturn {\n\t\t\t\tsearchResults: getEntityRecords( ...selectorArgs ),\n\t\t\t\tsearchHasResolved: hasFinishedResolution(\n\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\tselectorArgs\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ search, parents ]\n\t);\n\tconst currentParents = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! parents?.length ) return EMPTY_ARRAY;\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\t\t\treturn getEntityRecords( 'postType', postType, {\n\t\t\t\t...BASE_QUERY,\n\t\t\t\tinclude: parents,\n\t\t\t\tper_page: parents.length,\n\t\t\t} );\n\t\t},\n\t\t[ parents ]\n\t);\n\t// Update the `value` state only after the selectors are resolved\n\t// to avoid emptying the input when we're changing parents.\n\tuseEffect( () => {\n\t\tif ( ! parents?.length ) {\n\t\t\tsetValue( EMPTY_ARRAY );\n\t\t}\n\t\tif ( ! currentParents?.length ) return;\n\t\tconst currentParentsInfo = getEntitiesInfo(\n\t\t\tmapToIHasNameAndId( currentParents, 'title.rendered' )\n\t\t);\n\t\t// Returns only the existing entity ids. This prevents the component\n\t\t// from crashing in the editor, when non existing ids are provided.\n\t\tconst sanitizedValue = parents.reduce( ( accumulator, id ) => {\n\t\t\tconst entity = currentParentsInfo.mapById[ id ];\n\t\t\tif ( entity ) {\n\t\t\t\taccumulator.push( {\n\t\t\t\t\tid,\n\t\t\t\t\tvalue: entity.name,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t}, [] );\n\t\tsetValue( sanitizedValue );\n\t}, [ parents, currentParents ] );\n\n\tconst entitiesInfo = useMemo( () => {\n\t\tif ( ! searchResults?.length ) return EMPTY_ARRAY;\n\t\treturn getEntitiesInfo(\n\t\t\tmapToIHasNameAndId( searchResults, 'title.rendered' )\n\t\t);\n\t}, [ searchResults ] );\n\t// Update suggestions only when the query has resolved.\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) return;\n\t\tsetSuggestions( entitiesInfo.names );\n\t}, [ entitiesInfo.names, searchHasResolved ] );\n\n\tconst getIdByValue = ( entitiesMappedByName, entity ) => {\n\t\tconst id = entity?.id || entitiesMappedByName?.[ entity ]?.id;\n\t\tif ( id ) return id;\n\t};\n\tconst onParentChange = ( newValue ) => {\n\t\tconst ids = Array.from(\n\t\t\tnewValue.reduce( ( accumulator, entity ) => {\n\t\t\t\t// Verify that new values point to existing entities.\n\t\t\t\tconst id = getIdByValue( entitiesInfo.mapByName, entity );\n\t\t\t\tif ( id ) accumulator.add( id );\n\t\t\t\treturn accumulator;\n\t\t\t}, new Set() )\n\t\t);\n\t\tsetSuggestions( EMPTY_ARRAY );\n\t\tonChange( { parents: ids } );\n\t};\n\treturn (\n\t\t<FormTokenField\n\t\t\tlabel={ __( 'Parents' ) }\n\t\t\tvalue={ value }\n\t\t\tonInputChange={ debouncedSearch }\n\t\t\tsuggestions={ suggestions }\n\t\t\tonChange={ onParentChange }\n\t\t\t__experimentalShowHowTo={ false }\n\t\t/>\n\t);\n}\n\nexport default ParentControl;\n","/**\n * WordPress dependencies\n */\nimport { FormTokenField } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getEntitiesInfo, useTaxonomies } from '../../utils';\nimport { MAX_FETCHED_TERMS } from '../../constants';\n\n// Helper function to get the term id based on user input in terms `FormTokenField`.\nconst getTermIdByTermValue = ( termsMappedByName, termValue ) => {\n\t// First we check for exact match by `term.id` or case sensitive `term.name` match.\n\tconst termId = termValue?.id || termsMappedByName[ termValue ]?.id;\n\tif ( termId ) return termId;\n\t/**\n\t * Here we make an extra check for entered terms in a non case sensitive way,\n\t * to match user expectations, due to `FormTokenField` behaviour that shows\n\t * suggestions which are case insensitive.\n\t *\n\t * Although WP tries to discourage users to add terms with the same name (case insensitive),\n\t * it's still possible if you manually change the name, as long as the terms have different slugs.\n\t * In this edge case we always apply the first match from the terms list.\n\t */\n\tconst termValueLower = termValue.toLocaleLowerCase();\n\tfor ( const term in termsMappedByName ) {\n\t\tif ( term.toLocaleLowerCase() === termValueLower ) {\n\t\t\treturn termsMappedByName[ term ].id;\n\t\t}\n\t}\n};\n\nexport const useTaxonomiesInfo = ( postType ) => {\n\tconst taxonomies = useTaxonomies( postType );\n\tconst taxonomiesInfo = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecords } = select( coreStore );\n\t\t\tconst termsQuery = { context: 'view', per_page: MAX_FETCHED_TERMS };\n\t\t\tconst _taxonomiesInfo = taxonomies?.map( ( { slug, name } ) => {\n\t\t\t\tconst _terms = getEntityRecords( 'taxonomy', slug, termsQuery );\n\t\t\t\treturn {\n\t\t\t\t\tslug,\n\t\t\t\t\tname,\n\t\t\t\t\tterms: getEntitiesInfo( _terms ),\n\t\t\t\t};\n\t\t\t} );\n\t\t\treturn _taxonomiesInfo;\n\t\t},\n\t\t[ taxonomies ]\n\t);\n\treturn taxonomiesInfo;\n};\n\nexport function TaxonomyControls( { onChange, query } ) {\n\tconst taxonomiesInfo = useTaxonomiesInfo( query.postType );\n\tconst onTermsChange = ( taxonomySlug ) => ( newTermValues ) => {\n\t\tconst taxonomyInfo = taxonomiesInfo.find(\n\t\t\t( { slug } ) => slug === taxonomySlug\n\t\t);\n\t\tif ( ! taxonomyInfo ) return;\n\t\tconst termIds = Array.from(\n\t\t\tnewTermValues.reduce( ( accumulator, termValue ) => {\n\t\t\t\tconst termId = getTermIdByTermValue(\n\t\t\t\t\ttaxonomyInfo.terms.mapByName,\n\t\t\t\t\ttermValue\n\t\t\t\t);\n\t\t\t\tif ( termId ) accumulator.add( termId );\n\t\t\t\treturn accumulator;\n\t\t\t}, new Set() )\n\t\t);\n\t\tconst newTaxQuery = {\n\t\t\t...query.taxQuery,\n\t\t\t[ taxonomySlug ]: termIds,\n\t\t};\n\t\tonChange( { taxQuery: newTaxQuery } );\n\t};\n\t// Returns only the existing term ids in proper format to be\n\t// used in `FormTokenField`. This prevents the component from\n\t// crashing in the editor, when non existing term ids were provided.\n\tconst getExistingTaxQueryValue = ( taxonomySlug ) => {\n\t\tconst taxonomyInfo = taxonomiesInfo.find(\n\t\t\t( { slug } ) => slug === taxonomySlug\n\t\t);\n\t\tif ( ! taxonomyInfo ) return [];\n\t\treturn ( query.taxQuery?.[ taxonomySlug ] || [] ).reduce(\n\t\t\t( accumulator, termId ) => {\n\t\t\t\tconst term = taxonomyInfo.terms.mapById[ termId ];\n\t\t\t\tif ( term ) {\n\t\t\t\t\taccumulator.push( {\n\t\t\t\t\t\tid: termId,\n\t\t\t\t\t\tvalue: term.name,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t[]\n\t\t);\n\t};\n\treturn (\n\t\t<>\n\t\t\t{ !! taxonomiesInfo?.length &&\n\t\t\t\ttaxonomiesInfo.map( ( { slug, name, terms } ) => {\n\t\t\t\t\tif ( ! terms?.names?.length ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={ slug }\n\t\t\t\t\t\t\tclassName=\"block-library-query-inspector__taxonomy-control\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FormTokenField\n\t\t\t\t\t\t\t\tlabel={ name }\n\t\t\t\t\t\t\t\tvalue={ getExistingTaxQueryValue( slug ) }\n\t\t\t\t\t\t\t\tsuggestions={ terms.names }\n\t\t\t\t\t\t\t\tonChange={ onTermsChange( slug ) }\n\t\t\t\t\t\t\t\t__experimentalShowHowTo={ false }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t</>\n\t);\n}\n","export const MAX_FETCHED_TERMS = 100;\nexport const DEFAULTS_POSTS_PER_PAGE = 3;\n\nexport default {\n\tMAX_FETCHED_TERMS,\n\tDEFAULTS_POSTS_PER_PAGE,\n};\n","/**\n * WordPress dependencies\n */\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nconst stickyOptions = [\n\t{ label: __( 'Include' ), value: '' },\n\t{ label: __( 'Exclude' ), value: 'exclude' },\n\t{ label: __( 'Only' ), value: 'only' },\n];\n\nexport default function StickyControl( { value, onChange } ) {\n\treturn (\n\t\t<SelectControl\n\t\t\tlabel={ __( 'Sticky posts' ) }\n\t\t\toptions={ stickyOptions }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\thelp={ __(\n\t\t\t\t'Blog posts can be “stickied”, a feature that places them at the top of the front page of posts, keeping it there until new sticky posts are published.'\n\t\t\t) }\n\t\t/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tTextControl,\n\tSelectControl,\n\tRangeControl,\n\tToggleControl,\n\tNotice,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { debounce } from '@wordpress/compose';\nimport { useEffect, useState, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport OrderControl from './order-control';\nimport AuthorControl from './author-control';\nimport ParentControl from './parent-control';\nimport { TaxonomyControls, useTaxonomiesInfo } from './taxonomy-controls';\nimport StickyControl from './sticky-control';\nimport {\n\tusePostTypes,\n\tuseIsPostTypeHierarchical,\n\tuseAllowedControls,\n\tisControlAllowed,\n} from '../../utils';\n\nexport default function QueryInspectorControls( {\n\tattributes,\n\tsetQuery,\n\tsetDisplayLayout,\n} ) {\n\tconst { query, displayLayout } = attributes;\n\tconst {\n\t\torder,\n\t\torderBy,\n\t\tauthor: authorIds,\n\t\tpostType,\n\t\tsticky,\n\t\tinherit,\n\t\ttaxQuery,\n\t\tparents,\n\t} = query;\n\tconst allowedControls = useAllowedControls( attributes );\n\tconst [ showSticky, setShowSticky ] = useState( postType === 'post' );\n\tconst { postTypesTaxonomiesMap, postTypesSelectOptions } = usePostTypes();\n\tconst taxonomiesInfo = useTaxonomiesInfo( postType );\n\tconst isPostTypeHierarchical = useIsPostTypeHierarchical( postType );\n\tuseEffect( () => {\n\t\tsetShowSticky( postType === 'post' );\n\t}, [ postType ] );\n\tconst onPostTypeChange = ( newValue ) => {\n\t\tconst updateQuery = { postType: newValue };\n\t\t// We need to dynamically update the `taxQuery` property,\n\t\t// by removing any not supported taxonomy from the query.\n\t\tconst supportedTaxonomies = postTypesTaxonomiesMap[ newValue ];\n\t\tconst updatedTaxQuery = Object.entries( taxQuery || {} ).reduce(\n\t\t\t( accumulator, [ taxonomySlug, terms ] ) => {\n\t\t\t\tif ( supportedTaxonomies.includes( taxonomySlug ) ) {\n\t\t\t\t\taccumulator[ taxonomySlug ] = terms;\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t\tupdateQuery.taxQuery = !! Object.keys( updatedTaxQuery ).length\n\t\t\t? updatedTaxQuery\n\t\t\t: undefined;\n\n\t\tif ( newValue !== 'post' ) {\n\t\t\tupdateQuery.sticky = '';\n\t\t}\n\t\t// We need to reset `parents` because they are tied to each post type.\n\t\tupdateQuery.parents = [];\n\t\tsetQuery( updateQuery );\n\t};\n\tconst [ querySearch, setQuerySearch ] = useState( query.search );\n\tconst onChangeDebounced = useCallback(\n\t\tdebounce( () => {\n\t\t\tif ( query.search !== querySearch ) {\n\t\t\t\tsetQuery( { search: querySearch } );\n\t\t\t}\n\t\t}, 250 ),\n\t\t[ querySearch, query.search ]\n\t);\n\tuseEffect( () => {\n\t\tonChangeDebounced();\n\t\treturn onChangeDebounced.cancel;\n\t}, [ querySearch, onChangeDebounced ] );\n\tconst showInheritControl = isControlAllowed( allowedControls, 'inherit' );\n\tconst showPostTypeControl =\n\t\t! inherit && isControlAllowed( allowedControls, 'postType' );\n\tconst showColumnsControl = displayLayout?.type === 'flex';\n\tconst showOrderControl =\n\t\t! inherit && isControlAllowed( allowedControls, 'order' );\n\tconst showStickyControl =\n\t\t! inherit &&\n\t\tshowSticky &&\n\t\tisControlAllowed( allowedControls, 'sticky' );\n\tconst showSettingsPanel =\n\t\tshowInheritControl ||\n\t\tshowPostTypeControl ||\n\t\tshowColumnsControl ||\n\t\tshowOrderControl ||\n\t\tshowStickyControl;\n\treturn (\n\t\t<>\n\t\t\t{ showSettingsPanel && (\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t{ showInheritControl && (\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Inherit query from template' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Toggle to use the global query context that is set with the current template, such as an archive or search. Disable to customize the settings independently.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tchecked={ !! inherit }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tsetQuery( { inherit: !! value } )\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\t{ showPostTypeControl && (\n\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\toptions={ postTypesSelectOptions }\n\t\t\t\t\t\t\t\tvalue={ postType }\n\t\t\t\t\t\t\t\tlabel={ __( 'Post type' ) }\n\t\t\t\t\t\t\t\tonChange={ onPostTypeChange }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'WordPress contains different types of content and they are divided into collections called “Post types”. By default there are a few different ones such as blog posts and pages, but plugins could add more.'\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\t{ showColumnsControl && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\t\t\tvalue={ displayLayout.columns }\n\t\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\t\tsetDisplayLayout( { columns: value } )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tmin={ 2 }\n\t\t\t\t\t\t\t\t\tmax={ Math.max( 6, displayLayout.columns ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ displayLayout.columns > 6 && (\n\t\t\t\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\t\t\t\tstatus=\"warning\"\n\t\t\t\t\t\t\t\t\t\tisDismissible={ false }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t'This column count exceeds the recommended amount and may cause visual breakage.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</Notice>\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\t{ showOrderControl && (\n\t\t\t\t\t\t\t<OrderControl\n\t\t\t\t\t\t\t\t{ ...{ order, orderBy } }\n\t\t\t\t\t\t\t\tonChange={ setQuery }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showStickyControl && (\n\t\t\t\t\t\t\t<StickyControl\n\t\t\t\t\t\t\t\tvalue={ sticky }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tsetQuery( { sticky: value } )\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</PanelBody>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t{ ! inherit && (\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<ToolsPanel\n\t\t\t\t\t\tclassName=\"block-library-query-toolspanel__filters\"\n\t\t\t\t\t\tlabel={ __( 'Filters' ) }\n\t\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\t\tsetQuery( {\n\t\t\t\t\t\t\t\tauthor: '',\n\t\t\t\t\t\t\t\tparents: [],\n\t\t\t\t\t\t\t\tsearch: '',\n\t\t\t\t\t\t\t\ttaxQuery: null,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tsetQuerySearch( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ !! taxonomiesInfo?.length &&\n\t\t\t\t\t\t\tisControlAllowed( allowedControls, 'taxQuery' ) && (\n\t\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Taxonomies' ) }\n\t\t\t\t\t\t\t\t\thasValue={ () =>\n\t\t\t\t\t\t\t\t\t\tObject.values( taxQuery || {} ).some(\n\t\t\t\t\t\t\t\t\t\t\t( terms ) => !! terms.length\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\t\t\tsetQuery( { taxQuery: null } )\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\t\t<TaxonomyControls\n\t\t\t\t\t\t\t\t\t\tonChange={ setQuery }\n\t\t\t\t\t\t\t\t\t\tquery={ query }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ isControlAllowed( allowedControls, 'author' ) && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\thasValue={ () => !! authorIds }\n\t\t\t\t\t\t\t\tlabel={ __( 'Authors' ) }\n\t\t\t\t\t\t\t\tonDeselect={ () => setQuery( { author: '' } ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<AuthorControl\n\t\t\t\t\t\t\t\t\tvalue={ authorIds }\n\t\t\t\t\t\t\t\t\tonChange={ setQuery }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ isControlAllowed( allowedControls, 'search' ) && (\n\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\thasValue={ () => !! querySearch }\n\t\t\t\t\t\t\t\tlabel={ __( 'Keyword' ) }\n\t\t\t\t\t\t\t\tonDeselect={ () => setQuerySearch( '' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Keyword' ) }\n\t\t\t\t\t\t\t\t\tvalue={ querySearch }\n\t\t\t\t\t\t\t\t\tonChange={ setQuerySearch }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ isPostTypeHierarchical &&\n\t\t\t\t\t\t\tisControlAllowed( allowedControls, 'parents' ) && (\n\t\t\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\t\t\thasValue={ () => !! parents?.length }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Parents' ) }\n\t\t\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\t\t\tsetQuery( { parents: [] } )\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\t\t<ParentControl\n\t\t\t\t\t\t\t\t\t\tparents={ parents }\n\t\t\t\t\t\t\t\t\t\tpostType={ postType }\n\t\t\t\t\t\t\t\t\t\tonChange={ setQuery }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</ToolsPanel>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useEffect } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseSetting,\n\tstore as blockEditorStore,\n\tuseInnerBlocksProps,\n} from '@wordpress/block-editor';\nimport { SelectControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport QueryToolbar from './query-toolbar';\nimport QueryInspectorControls from './inspector-controls';\nimport { DEFAULTS_POSTS_PER_PAGE } from '../constants';\n\nconst TEMPLATE = [ [ 'core/post-template' ] ];\nexport default function QueryContent( {\n\tattributes,\n\tsetAttributes,\n\topenPatternSelectionModal,\n\tname,\n\tclientId,\n} ) {\n\tconst {\n\t\tqueryId,\n\t\tquery,\n\t\tdisplayLayout,\n\t\ttagName: TagName = 'div',\n\t\tlayout = {},\n\t} = attributes;\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tconst instanceId = useInstanceId( QueryContent );\n\tconst { themeSupportsLayout } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn { themeSupportsLayout: getSettings()?.supportsLayout };\n\t}, [] );\n\tconst defaultLayout = useSetting( 'layout' ) || {};\n\tconst usedLayout = ! layout?.type\n\t\t? { ...defaultLayout, ...layout, type: 'default' }\n\t\t: { ...defaultLayout, ...layout };\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t\t__experimentalLayout: themeSupportsLayout ? usedLayout : undefined,\n\t} );\n\tconst { postsPerPage } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tpostsPerPage:\n\t\t\t\t+getSettings().postsPerPage || DEFAULTS_POSTS_PER_PAGE,\n\t\t};\n\t}, [] );\n\t// There are some effects running where some initialization logic is\n\t// happening and setting some values to some attributes (ex. queryId).\n\t// These updates can cause an `undo trap` where undoing will result in\n\t// resetting again, so we need to mark these changes as not persistent\n\t// with `__unstableMarkNextChangeAsNotPersistent`.\n\n\t// Changes in query property (which is an object) need to be in the same callback,\n\t// because updates are batched after the render and changes in different query properties\n\t// would cause to override previous wanted changes.\n\tuseEffect( () => {\n\t\tconst newQuery = {};\n\t\tif ( ! query.perPage && postsPerPage ) {\n\t\t\tnewQuery.perPage = postsPerPage;\n\t\t}\n\t\tif ( !! Object.keys( newQuery ).length ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tupdateQuery( newQuery );\n\t\t}\n\t}, [ query.perPage ] );\n\t// We need this for multi-query block pagination.\n\t// Query parameters for each block are scoped to their ID.\n\tuseEffect( () => {\n\t\tif ( ! Number.isFinite( queryId ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { queryId: instanceId } );\n\t\t}\n\t}, [ queryId, instanceId ] );\n\tconst updateQuery = ( newQuery ) =>\n\t\tsetAttributes( { query: { ...query, ...newQuery } } );\n\tconst updateDisplayLayout = ( newDisplayLayout ) =>\n\t\tsetAttributes( {\n\t\t\tdisplayLayout: { ...displayLayout, ...newDisplayLayout },\n\t\t} );\n\treturn (\n\t\t<>\n\t\t\t<QueryInspectorControls\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\tsetDisplayLayout={ updateDisplayLayout }\n\t\t\t/>\n\t\t\t<BlockControls>\n\t\t\t\t<QueryToolbar\n\t\t\t\t\tname={ name }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetQuery={ updateQuery }\n\t\t\t\t\tsetDisplayLayout={ updateDisplayLayout }\n\t\t\t\t\topenPatternSelectionModal={ openPatternSelectionModal }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t<SelectControl\n\t\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\t\toptions={ [\n\t\t\t\t\t\t{ label: __( 'Default (<div>)' ), value: 'div' },\n\t\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t] }\n\t\t\t\t\tvalue={ TagName }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { tagName: value } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<TagName { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useState } from '@wordpress/element';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalBlockVariationPicker,\n\t__experimentalGetMatchingVariation as getMatchingVariation,\n} from '@wordpress/block-editor';\nimport { Button, Placeholder } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nexport default function QueryPlaceholder( {\n\tattributes,\n\tclientId,\n\tname,\n\topenPatternSelectionModal,\n\tsetAttributes,\n} ) {\n\tconst [ isStartingBlank, setIsStartingBlank ] = useState( false );\n\tconst blockProps = useBlockProps();\n\n\tconst { blockType, allVariations, hasPatterns } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockVariations, getBlockType } = select( blocksStore );\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\t__experimentalGetPatternsByBlockTypes,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn {\n\t\t\t\tblockType: getBlockType( name ),\n\t\t\t\tallVariations: getBlockVariations( name ),\n\t\t\t\thasPatterns: !! __experimentalGetPatternsByBlockTypes(\n\t\t\t\t\tname,\n\t\t\t\t\trootClientId\n\t\t\t\t).length,\n\t\t\t};\n\t\t},\n\t\t[ name, clientId ]\n\t);\n\n\tconst matchingVariation = getMatchingVariation( attributes, allVariations );\n\tconst icon =\n\t\tmatchingVariation?.icon?.src ||\n\t\tmatchingVariation?.icon ||\n\t\tblockType?.icon?.src;\n\tconst label = matchingVariation?.title || blockType?.title;\n\tif ( isStartingBlank ) {\n\t\treturn (\n\t\t\t<QueryVariationPicker\n\t\t\t\tclientId={ clientId }\n\t\t\t\tname={ name }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<Placeholder\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\tinstructions={ __(\n\t\t\t\t\t'Choose a pattern for the query loop or start blank.'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ !! hasPatterns && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ openPatternSelectionModal }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Choose' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetIsStartingBlank( true );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Start blank' ) }\n\t\t\t\t</Button>\n\t\t\t</Placeholder>\n\t\t</div>\n\t);\n}\n\nfunction QueryVariationPicker( {\n\tclientId,\n\tname,\n\tattributes,\n\tsetAttributes,\n\ticon,\n\tlabel,\n} ) {\n\tconst { defaultVariation, scopeVariations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockVariations,\n\t\t\t\tgetBlockType,\n\t\t\t\tgetDefaultBlockVariation,\n\t\t\t} = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tblockType: getBlockType( name ),\n\t\t\t\tdefaultVariation: getDefaultBlockVariation( name, 'block' ),\n\t\t\t\tscopeVariations: getBlockVariations( name, 'block' ),\n\t\t\t};\n\t\t},\n\t\t[ name ]\n\t);\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<__experimentalBlockVariationPicker\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\tvariations={ scopeVariations }\n\t\t\t\tonSelect={ ( nextVariation = defaultVariation ) => {\n\t\t\t\t\tif ( nextVariation.attributes ) {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t...nextVariation.attributes,\n\t\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\t\t...nextVariation.attributes.query,\n\t\t\t\t\t\t\t\tpostType:\n\t\t\t\t\t\t\t\t\tattributes.query.postType ||\n\t\t\t\t\t\t\t\t\tnextVariation.attributes.query.postType,\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\tif ( nextVariation.innerBlocks ) {\n\t\t\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate(\n\t\t\t\t\t\t\t\tnextVariation.innerBlocks\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfalse\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</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\nimport {\n\tBlockContextProvider,\n\tstore as blockEditorStore,\n\t__experimentalBlockPatternSetup as BlockPatternSetup,\n} from '@wordpress/block-editor';\nimport { Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport QueryContent from './query-content';\nimport QueryPlaceholder from './query-placeholder';\nimport {\n\tuseBlockNameForPatterns,\n\tgetTransformedBlocksFromPattern,\n} from '../utils';\n\nconst QueryEdit = ( props ) => {\n\tconst { clientId, attributes } = props;\n\tconst [ isPatternSelectionModalOpen, setIsPatternSelectionModalOpen ] =\n\t\tuseState( false );\n\tconst hasInnerBlocks = useSelect(\n\t\t( select ) =>\n\t\t\t!! select( blockEditorStore ).getBlocks( clientId ).length,\n\t\t[ clientId ]\n\t);\n\tconst Component = hasInnerBlocks ? QueryContent : QueryPlaceholder;\n\treturn (\n\t\t<>\n\t\t\t<Component\n\t\t\t\t{ ...props }\n\t\t\t\topenPatternSelectionModal={ () =>\n\t\t\t\t\tsetIsPatternSelectionModalOpen( true )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ isPatternSelectionModalOpen && (\n\t\t\t\t<PatternSelectionModal\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetIsPatternSelectionModalOpen={\n\t\t\t\t\t\tsetIsPatternSelectionModalOpen\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nfunction PatternSelectionModal( {\n\tclientId,\n\tattributes,\n\tsetIsPatternSelectionModalOpen,\n} ) {\n\tconst { replaceBlock, selectBlock } = useDispatch( blockEditorStore );\n\tconst onBlockPatternSelect = ( blocks ) => {\n\t\tconst { newBlocks, queryClientIds } = getTransformedBlocksFromPattern(\n\t\t\tblocks,\n\t\t\tattributes\n\t\t);\n\t\treplaceBlock( clientId, newBlocks );\n\t\tif ( queryClientIds[ 0 ] ) {\n\t\t\tselectBlock( queryClientIds[ 0 ] );\n\t\t}\n\t};\n\t// When we preview Query Loop blocks we should prefer the current\n\t// block's postType, which is passed through block context.\n\tconst blockPreviewContext = useMemo(\n\t\t() => ( {\n\t\t\tpreviewPostType: attributes.query.postType,\n\t\t} ),\n\t\t[ attributes.query.postType ]\n\t);\n\tconst blockNameForPatterns = useBlockNameForPatterns(\n\t\tclientId,\n\t\tattributes\n\t);\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"block-editor-query-pattern__selection-modal\"\n\t\t\ttitle={ __( 'Choose a pattern' ) }\n\t\t\tcloseLabel={ __( 'Cancel' ) }\n\t\t\tonRequestClose={ () => setIsPatternSelectionModalOpen( false ) }\n\t\t>\n\t\t\t<BlockContextProvider value={ blockPreviewContext }>\n\t\t\t\t<BlockPatternSetup\n\t\t\t\t\tblockName={ blockNameForPatterns }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tonBlockPatternSelect={ onBlockPatternSelect }\n\t\t\t\t/>\n\t\t\t</BlockContextProvider>\n\t\t</Modal>\n\t);\n}\n\nexport default QueryEdit;\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/components';\n\nexport const titleDate = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\">\n\t\t<Path d=\"M41 9H7v3h34V9zm-22 5H7v1h12v-1zM7 26h12v1H7v-1zm34-5H7v3h34v-3zM7 38h12v1H7v-1zm34-5H7v3h34v-3z\" />\n\t</SVG>\n);\n\nexport const titleExcerpt = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\">\n\t\t<Path d=\"M41 9H7v3h34V9zm-4 5H7v1h30v-1zm4 3H7v1h34v-1zM7 20h30v1H7v-1zm0 12h30v1H7v-1zm34 3H7v1h34v-1zM7 38h30v1H7v-1zm34-11H7v3h34v-3z\" />\n\t</SVG>\n);\n\nexport const titleDateExcerpt = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\">\n\t\t<Path d=\"M41 9H7v3h34V9zm-22 5H7v1h12v-1zm22 3H7v1h34v-1zM7 20h34v1H7v-1zm0 12h12v1H7v-1zm34 3H7v1h34v-1zM7 38h34v1H7v-1zm34-11H7v3h34v-3z\" />\n\t</SVG>\n);\n\nexport const imageDateTitle = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\">\n\t\t<Path d=\"M7 9h34v6H7V9zm12 8H7v1h12v-1zm18 3H7v1h30v-1zm0 18H7v1h30v-1zM7 35h12v1H7v-1zm34-8H7v6h34v-6z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { postList } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport {\n\ttitleDate,\n\ttitleExcerpt,\n\ttitleDateExcerpt,\n\timageDateTitle,\n} from './icons';\n\nconst QUERY_DEFAULT_ATTRIBUTES = {\n\tquery: {\n\t\tperPage: 3,\n\t\tpages: 0,\n\t\toffset: 0,\n\t\tpostType: 'post',\n\t\torder: 'desc',\n\t\torderBy: 'date',\n\t\tauthor: '',\n\t\tsearch: '',\n\t\texclude: [],\n\t\tsticky: '',\n\t\tinherit: false,\n\t},\n};\n\nconst variations = [\n\t{\n\t\tname: 'posts-list',\n\t\ttitle: __( 'Posts List' ),\n\t\tdescription: __(\n\t\t\t'Display a list of your most recent posts, excluding sticky posts.'\n\t\t),\n\t\ticon: postList,\n\t\tattributes: {\n\t\t\tquery: {\n\t\t\t\tperPage: 4,\n\t\t\t\tpages: 1,\n\t\t\t\toffset: 0,\n\t\t\t\tpostType: 'post',\n\t\t\t\torder: 'desc',\n\t\t\t\torderBy: 'date',\n\t\t\t\tauthor: '',\n\t\t\t\tsearch: '',\n\t\t\t\tsticky: 'exclude',\n\t\t\t\tinherit: false,\n\t\t\t},\n\t\t},\n\t\tscope: [ 'inserter' ],\n\t},\n\t{\n\t\tname: 'title-date',\n\t\ttitle: __( 'Title & Date' ),\n\t\ticon: titleDate,\n\t\tattributes: { ...QUERY_DEFAULT_ATTRIBUTES },\n\t\tinnerBlocks: [\n\t\t\t[\n\t\t\t\t'core/post-template',\n\t\t\t\t{},\n\t\t\t\t[ [ 'core/post-title' ], [ 'core/post-date' ] ],\n\t\t\t],\n\t\t\t[ 'core/query-pagination' ],\n\t\t\t[ 'core/query-no-results' ],\n\t\t],\n\t\tscope: [ 'block' ],\n\t},\n\t{\n\t\tname: 'title-excerpt',\n\t\ttitle: __( 'Title & Excerpt' ),\n\t\ticon: titleExcerpt,\n\t\tattributes: { ...QUERY_DEFAULT_ATTRIBUTES },\n\t\tinnerBlocks: [\n\t\t\t[\n\t\t\t\t'core/post-template',\n\t\t\t\t{},\n\t\t\t\t[ [ 'core/post-title' ], [ 'core/post-excerpt' ] ],\n\t\t\t],\n\t\t\t[ 'core/query-pagination' ],\n\t\t\t[ 'core/query-no-results' ],\n\t\t],\n\t\tscope: [ 'block' ],\n\t},\n\t{\n\t\tname: 'title-date-excerpt',\n\t\ttitle: __( 'Title, Date, & Excerpt' ),\n\t\ticon: titleDateExcerpt,\n\t\tattributes: { ...QUERY_DEFAULT_ATTRIBUTES },\n\t\tinnerBlocks: [\n\t\t\t[\n\t\t\t\t'core/post-template',\n\t\t\t\t{},\n\t\t\t\t[\n\t\t\t\t\t[ 'core/post-title' ],\n\t\t\t\t\t[ 'core/post-date' ],\n\t\t\t\t\t[ 'core/post-excerpt' ],\n\t\t\t\t],\n\t\t\t],\n\t\t\t[ 'core/query-pagination' ],\n\t\t\t[ 'core/query-no-results' ],\n\t\t],\n\t\tscope: [ 'block' ],\n\t},\n\t{\n\t\tname: 'image-date-title',\n\t\ttitle: __( 'Image, Date, & Title' ),\n\t\ticon: imageDateTitle,\n\t\tattributes: { ...QUERY_DEFAULT_ATTRIBUTES },\n\t\tinnerBlocks: [\n\t\t\t[\n\t\t\t\t'core/post-template',\n\t\t\t\t{},\n\t\t\t\t[\n\t\t\t\t\t[ 'core/post-featured-image' ],\n\t\t\t\t\t[ 'core/post-date' ],\n\t\t\t\t\t[ 'core/post-title' ],\n\t\t\t\t],\n\t\t\t],\n\t\t\t[ 'core/query-pagination' ],\n\t\t\t[ 'core/query-no-results' ],\n\t\t],\n\t\tscope: [ 'block' ],\n\t},\n];\n\nexport default variations;\n","/**\n * WordPress dependencies\n */\nimport {\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\nconst migrateToTaxQuery = ( attributes ) => {\n\tconst { query } = attributes;\n\tconst { categoryIds, tagIds, ...newQuery } = query;\n\n\tif ( query.categoryIds?.length || query.tagIds?.length ) {\n\t\tnewQuery.taxQuery = {\n\t\t\tcategory: !! query.categoryIds?.length\n\t\t\t\t? query.categoryIds\n\t\t\t\t: undefined,\n\t\t\tpost_tag: !! query.tagIds?.length ? query.tagIds : undefined,\n\t\t};\n\t}\n\treturn {\n\t\t...attributes,\n\t\tquery: newQuery,\n\t};\n};\n\nconst deprecated = [\n\t// Version with `categoryIds and tagIds`.\n\t{\n\t\tattributes: {\n\t\t\tqueryId: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\tquery: {\n\t\t\t\ttype: 'object',\n\t\t\t\tdefault: {\n\t\t\t\t\tperPage: null,\n\t\t\t\t\tpages: 0,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tpostType: 'post',\n\t\t\t\t\tcategoryIds: [],\n\t\t\t\t\ttagIds: [],\n\t\t\t\t\torder: 'desc',\n\t\t\t\t\torderBy: 'date',\n\t\t\t\t\tauthor: '',\n\t\t\t\t\tsearch: '',\n\t\t\t\t\texclude: [],\n\t\t\t\t\tsticky: '',\n\t\t\t\t\tinherit: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\ttagName: {\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'div',\n\t\t\t},\n\t\t\tdisplayLayout: {\n\t\t\t\ttype: 'object',\n\t\t\t\tdefault: {\n\t\t\t\t\ttype: 'list',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\talign: [ 'wide', 'full' ],\n\t\t\thtml: false,\n\t\t\tcolor: {\n\t\t\t\tgradients: true,\n\t\t\t\tlink: true,\n\t\t\t},\n\t\t\t__experimentalLayout: true,\n\t\t},\n\t\tisEligible: ( { query: { categoryIds, tagIds } = {} } ) =>\n\t\t\tcategoryIds || tagIds,\n\t\tmigrate: migrateToTaxQuery,\n\t\tsave( { attributes: { tagName: Tag = 'div' } } ) {\n\t\t\tconst blockProps = useBlockProps.save();\n\t\t\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\t\t\treturn <Tag { ...innerBlocksProps } />;\n\t\t},\n\t},\n\t// Version with NO wrapper `div` element.\n\t{\n\t\tattributes: {\n\t\t\tqueryId: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\tquery: {\n\t\t\t\ttype: 'object',\n\t\t\t\tdefault: {\n\t\t\t\t\tperPage: null,\n\t\t\t\t\tpages: 0,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tpostType: 'post',\n\t\t\t\t\tcategoryIds: [],\n\t\t\t\t\ttagIds: [],\n\t\t\t\t\torder: 'desc',\n\t\t\t\t\torderBy: 'date',\n\t\t\t\t\tauthor: '',\n\t\t\t\t\tsearch: '',\n\t\t\t\t\texclude: [],\n\t\t\t\t\tsticky: '',\n\t\t\t\t\tinherit: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\tlayout: {\n\t\t\t\ttype: 'object',\n\t\t\t\tdefault: {\n\t\t\t\t\ttype: 'list',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tsupports: {\n\t\t\thtml: false,\n\t\t},\n\t\tmigrate( attributes ) {\n\t\t\tconst withTaxQuery = migrateToTaxQuery( attributes );\n\t\t\tconst { layout, ...restWithTaxQuery } = withTaxQuery;\n\t\t\treturn {\n\t\t\t\t...restWithTaxQuery,\n\t\t\t\tdisplayLayout: withTaxQuery.layout,\n\t\t\t};\n\t\t},\n\t\tsave() {\n\t\t\treturn <InnerBlocks.Content />;\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { addQueryArgs } from '@wordpress/url';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { InspectorControls } from '@wordpress/block-editor';\n\nconst CreateNewPostLink = ( {\n\tattributes: { query: { postType } = {} } = {},\n} ) => {\n\tif ( ! postType ) return null;\n\tconst newPostUrl = addQueryArgs( 'post-new.php', {\n\t\tpost_type: postType,\n\t} );\n\treturn (\n\t\t<div className=\"wp-block-query__create-new-link\">\n\t\t\t{ createInterpolateElement(\n\t\t\t\t__( '<a>Create a new post</a> for this feed.' ),\n\t\t\t\t// eslint-disable-next-line jsx-a11y/anchor-has-content\n\t\t\t\t{ a: <a href={ newPostUrl } /> }\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\n/**\n * Override the default edit UI to include layout controls\n *\n * @param {Function} BlockEdit Original component\n * @return {Function}           Wrapped component\n */\nconst queryTopInspectorControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name, isSelected } = props;\n\t\tif ( name !== 'core/query' || ! isSelected ) {\n\t\t\treturn <BlockEdit key=\"edit\" { ...props } />;\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<CreateNewPostLink { ...props } />\n\t\t\t\t</InspectorControls>\n\t\t\t\t<BlockEdit key=\"edit\" { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withInspectorControls'\n);\n\nexport default queryTopInspectorControls;\n","/**\n * WordPress dependencies\n */\nimport { loop as icon } from '@wordpress/icons';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\nimport variations from './variations';\nimport deprecated from './deprecated';\nimport queryInspectorControls from './hooks';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\tvariations,\n\tdeprecated,\n};\n\nexport const init = () => {\n\taddFilter( 'editor.BlockEdit', 'core/query', queryInspectorControls );\n\n\treturn initBlock( { name, metadata, settings } );\n};\n","/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps, useBlockProps } from '@wordpress/block-editor';\n\nexport default function QuerySave( { attributes: { tagName: Tag = 'div' } } ) {\n\tconst blockProps = useBlockProps.save();\n\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\treturn <Tag { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\n\nconst TEMPLATE = [\n\t[\n\t\t'core/paragraph',\n\t\t{\n\t\t\tplaceholder: __(\n\t\t\t\t'Add text or blocks that will display when a query returns no results.'\n\t\t\t),\n\t\t},\n\t],\n];\n\nexport default function QueryNoResultsEdit() {\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t} );\n\n\treturn <div { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { loop 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 save from './save';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function QueryNoResultsSave() {\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\n\nexport function QueryPaginationArrowControls( { value, onChange } ) {\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\tlabel={ __( 'Arrow' ) }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\thelp={ __(\n\t\t\t\t'A decorative arrow appended to the next and previous page link.'\n\t\t\t) }\n\t\t\tisBlock\n\t\t>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tvalue=\"none\"\n\t\t\t\tlabel={ _x(\n\t\t\t\t\t'None',\n\t\t\t\t\t'Arrow option for Query Pagination Next/Previous blocks'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tvalue=\"arrow\"\n\t\t\t\tlabel={ _x(\n\t\t\t\t\t'Arrow',\n\t\t\t\t\t'Arrow option for Query Pagination Next/Previous blocks'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tvalue=\"chevron\"\n\t\t\t\tlabel={ _x(\n\t\t\t\t\t'Chevron',\n\t\t\t\t\t'Arrow option for Query Pagination Next/Previous blocks'\n\t\t\t\t) }\n\t\t\t/>\n\t\t</ToggleGroupControl>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { PanelBody } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { QueryPaginationArrowControls } from './query-pagination-arrow-controls';\n\nconst TEMPLATE = [\n\t[ 'core/query-pagination-previous' ],\n\t[ 'core/query-pagination-numbers' ],\n\t[ 'core/query-pagination-next' ],\n];\nconst ALLOWED_BLOCKS = [\n\t'core/query-pagination-previous',\n\t'core/query-pagination-numbers',\n\t'core/query-pagination-next',\n];\n\nconst getDefaultBlockLayout = ( blockTypeOrName ) => {\n\tconst layoutBlockSupportConfig = getBlockSupport(\n\t\tblockTypeOrName,\n\t\t'__experimentalLayout'\n\t);\n\treturn layoutBlockSupportConfig?.default;\n};\n\nexport default function QueryPaginationEdit( {\n\tattributes: { paginationArrow, layout },\n\tsetAttributes,\n\tclientId,\n\tname,\n} ) {\n\tconst usedLayout = layout || getDefaultBlockLayout( name );\n\tconst hasNextPreviousBlocks = useSelect( ( select ) => {\n\t\tconst { getBlocks } = select( blockEditorStore );\n\t\tconst innerBlocks = getBlocks( clientId );\n\t\t/**\n\t\t * Show the `paginationArrow` control only if a\n\t\t * `QueryPaginationNext/Previous` block exists.\n\t\t */\n\t\treturn innerBlocks?.find( ( innerBlock ) => {\n\t\t\treturn [\n\t\t\t\t'core/query-pagination-next',\n\t\t\t\t'core/query-pagination-previous',\n\t\t\t].includes( innerBlock.name );\n\t\t} );\n\t}, [] );\n\tconst blockProps = useBlockProps();\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t__experimentalLayout: usedLayout,\n\t} );\n\treturn (\n\t\t<>\n\t\t\t{ hasNextPreviousBlocks && (\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t<QueryPaginationArrowControls\n\t\t\t\t\t\t\tvalue={ paginationArrow }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { paginationArrow: value } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t<nav { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks, useBlockProps } from '@wordpress/block-editor';\n\nconst deprecated = [\n\t// Version with wrapper `div` element.\n\t{\n\t\tsave() {\n\t\t\treturn (\n\t\t\t\t<div { ...useBlockProps.save() }>\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { queryPagination 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 save from './save';\nimport deprecated from './deprecated';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\nexport default function save() {\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useBlockProps, PlainText } from '@wordpress/block-editor';\n\nconst arrowMap = {\n\tnone: '',\n\tarrow: '→',\n\tchevron: '»',\n};\n\nexport default function QueryPaginationNextEdit( {\n\tattributes: { label },\n\tsetAttributes,\n\tcontext: { paginationArrow },\n} ) {\n\tconst displayArrow = arrowMap[ paginationArrow ];\n\treturn (\n\t\t<a\n\t\t\thref=\"#pagination-next-pseudo-link\"\n\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t{ ...useBlockProps() }\n\t\t>\n\t\t\t<PlainText\n\t\t\t\t__experimentalVersion={ 2 }\n\t\t\t\ttagName=\"span\"\n\t\t\t\taria-label={ __( 'Next page link' ) }\n\t\t\t\tplaceholder={ __( 'Next Page' ) }\n\t\t\t\tvalue={ label }\n\t\t\t\tonChange={ ( newLabel ) =>\n\t\t\t\t\tsetAttributes( { label: newLabel } )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ displayArrow && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={ `wp-block-query-pagination-next-arrow is-arrow-${ paginationArrow }` }\n\t\t\t\t\taria-hidden={ true }\n\t\t\t\t>\n\t\t\t\t\t{ displayArrow }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</a>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { queryPaginationNext 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","/**\n * WordPress dependencies\n */\nimport { useBlockProps } from '@wordpress/block-editor';\n\nconst createPaginationItem = ( content, Tag = 'a', extraClass = '' ) => (\n\t<Tag className={ `page-numbers ${ extraClass }` }>{ content }</Tag>\n);\n\nconst previewPaginationNumbers = () => (\n\t<>\n\t\t{ createPaginationItem( 1 ) }\n\t\t{ createPaginationItem( 2 ) }\n\t\t{ createPaginationItem( 3, 'span', 'current' ) }\n\t\t{ createPaginationItem( 4 ) }\n\t\t{ createPaginationItem( 5 ) }\n\t\t{ createPaginationItem( '...', 'span', 'dots' ) }\n\t\t{ createPaginationItem( 8 ) }\n\t</>\n);\n\nexport default function QueryPaginationNumbersEdit() {\n\tconst paginationNumbers = previewPaginationNumbers();\n\treturn <div { ...useBlockProps() }>{ paginationNumbers }</div>;\n}\n","/**\n * WordPress dependencies\n */\nimport { queryPaginationNumbers 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","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useBlockProps, PlainText } from '@wordpress/block-editor';\n\nconst arrowMap = {\n\tnone: '',\n\tarrow: '←',\n\tchevron: '«',\n};\n\nexport default function QueryPaginationPreviousEdit( {\n\tattributes: { label },\n\tsetAttributes,\n\tcontext: { paginationArrow },\n} ) {\n\tconst displayArrow = arrowMap[ paginationArrow ];\n\treturn (\n\t\t<a\n\t\t\thref=\"#pagination-previous-pseudo-link\"\n\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t{ ...useBlockProps() }\n\t\t>\n\t\t\t{ displayArrow && (\n\t\t\t\t<span\n\t\t\t\t\tclassName={ `wp-block-query-pagination-previous-arrow is-arrow-${ paginationArrow }` }\n\t\t\t\t\taria-hidden={ true }\n\t\t\t\t>\n\t\t\t\t\t{ displayArrow }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t\t<PlainText\n\t\t\t\t__experimentalVersion={ 2 }\n\t\t\t\ttagName=\"span\"\n\t\t\t\taria-label={ __( 'Previous page link' ) }\n\t\t\t\tplaceholder={ __( 'Previous Page' ) }\n\t\t\t\tvalue={ label }\n\t\t\t\tonChange={ ( newLabel ) =>\n\t\t\t\t\tsetAttributes( { label: newLabel } )\n\t\t\t\t}\n\t\t\t/>\n\t\t</a>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { queryPaginationPrevious 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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tWarning,\n} from '@wordpress/block-editor';\nimport { ToggleControl, PanelBody } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport HeadingLevelDropdown from '../heading/heading-level-dropdown';\n\nconst SUPPORTED_TYPES = [ 'archive', 'search' ];\n\nexport default function QueryTitleEdit( {\n\tattributes: { type, level, textAlign, showPrefix, showSearchTerm },\n\tsetAttributes,\n} ) {\n\tconst TagName = `h${ level }`;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( 'wp-block-query-title__placeholder', {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t} );\n\n\tif ( ! SUPPORTED_TYPES.includes( type ) ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Warning>{ __( 'Provided type is not supported.' ) }</Warning>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet titleElement;\n\tif ( type === 'archive' ) {\n\t\ttitleElement = (\n\t\t\t<>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Show archive type in title' ) }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { showPrefix: ! showPrefix } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ showPrefix }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</InspectorControls>\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t{ showPrefix\n\t\t\t\t\t\t? __( 'Archive type: Name' )\n\t\t\t\t\t\t: __( 'Archive title' ) }\n\t\t\t\t</TagName>\n\t\t\t</>\n\t\t);\n\t}\n\n\tif ( type === 'search' ) {\n\t\ttitleElement = (\n\t\t\t<>\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Show search term in title' ) }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tshowSearchTerm: ! showSearchTerm,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ showSearchTerm }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</InspectorControls>\n\n\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t{ showSearchTerm\n\t\t\t\t\t\t? __( 'Search results for: “search term”' )\n\t\t\t\t\t\t: __( 'Search results' ) }\n\t\t\t\t</TagName>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\tselectedLevel={ level }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ titleElement }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { title } from '@wordpress/icons';\nconst variations = [\n\t{\n\t\tisDefault: true,\n\t\tname: 'archive-title',\n\t\ttitle: __( 'Archive Title' ),\n\t\tdescription: __(\n\t\t\t'Display the archive title based on the queried object.'\n\t\t),\n\t\ticon: title,\n\t\tattributes: {\n\t\t\ttype: 'archive',\n\t\t},\n\t\tscope: [ 'inserter' ],\n\t},\n\t{\n\t\tisDefault: false,\n\t\tname: 'search-title',\n\t\ttitle: __( 'Search Results Title' ),\n\t\tdescription: __(\n\t\t\t'Display the search results title based on the queried object.'\n\t\t),\n\t\ticon: title,\n\t\tattributes: {\n\t\t\ttype: 'search',\n\t\t},\n\t\tscope: [ 'inserter' ],\n\t},\n];\n\n/**\n * Add `isActive` function to all `query-title` variations, if not defined.\n * `isActive` function is used to find a variation match from a created\n *  Block by providing its attributes.\n */\nvariations.forEach( ( variation ) => {\n\tif ( variation.isActive ) return;\n\tvariation.isActive = ( blockAttributes, variationAttributes ) =>\n\t\tblockAttributes.type === variationAttributes.type;\n} );\n\nexport default variations;\n","/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\n\nconst v1 = {\n\tattributes: {\n\t\ttype: {\n\t\t\ttype: 'string',\n\t\t},\n\t\ttextAlign: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tlevel: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 1,\n\t\t},\n\t},\n\tsupports: {\n\t\talign: [ 'wide', 'full' ],\n\t\thtml: false,\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t},\n\t\tspacing: {\n\t\t\tmargin: true,\n\t\t},\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t},\n\t},\n\tsave() {\n\t\treturn null;\n\t},\n\tmigrate: migrateFontFamily,\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v1 ];\n","/**\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 variations from './variations';\nimport deprecated from './deprecated';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tvariations,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst quote = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M13 6v6h5.2v4c0 .8-.2 1.4-.5 1.7-.6.6-1.6.6-2.5.5h-.3v1.5h.5c1 0 2.3-.1 3.3-1 .6-.6 1-1.6 1-2.8V6H13zm-9 6h5.2v4c0 .8-.2 1.4-.5 1.7-.6.6-1.6.6-2.5.5h-.3v1.5h.5c1 0 2.3-.1 3.3-1 .6-.6 1-1.6 1-2.8V6H4v6z\" />\n\t</SVG>\n);\n\nexport default quote;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { createBlock, parseWithAttributeSchema } from '@wordpress/blocks';\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\nexport const migrateToQuoteV2 = ( attributes ) => {\n\tconst { value, ...restAttributes } = attributes;\n\n\treturn [\n\t\t{\n\t\t\t...restAttributes,\n\t\t},\n\t\tvalue\n\t\t\t? parseWithAttributeSchema( value, {\n\t\t\t\t\ttype: 'array',\n\t\t\t\t\tsource: 'query',\n\t\t\t\t\tselector: 'p',\n\t\t\t\t\tquery: {\n\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\tsource: 'html',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t  } ).map( ( { content } ) =>\n\t\t\t\t\tcreateBlock( 'core/paragraph', { content } )\n\t\t\t  )\n\t\t\t: createBlock( 'core/paragraph' ),\n\t];\n};\n\nconst v3 = {\n\tattributes: {\n\t\tvalue: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'blockquote',\n\t\t\tmultiline: 'p',\n\t\t\tdefault: '',\n\t\t\t__experimentalRole: 'content',\n\t\t},\n\t\tcitation: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'cite',\n\t\t\tdefault: '',\n\t\t\t__experimentalRole: 'content',\n\t\t},\n\t\talign: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\tanchor: true,\n\t\t__experimentalSlashInserter: true,\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalLetterSpacing: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\t__experimentalDefaultControls: {\n\t\t\t\tfontSize: true,\n\t\t\t\tfontAppearance: true,\n\t\t\t},\n\t\t},\n\t},\n\tsave( { attributes } ) {\n\t\tconst { align, value, citation } = attributes;\n\n\t\tconst className = classnames( {\n\t\t\t[ `has-text-align-${ align }` ]: align,\n\t\t} );\n\n\t\treturn (\n\t\t\t<blockquote { ...useBlockProps.save( { className } ) }>\n\t\t\t\t<RichText.Content multiline value={ value } />\n\t\t\t\t{ ! RichText.isEmpty( citation ) && (\n\t\t\t\t\t<RichText.Content tagName=\"cite\" value={ citation } />\n\t\t\t\t) }\n\t\t\t</blockquote>\n\t\t);\n\t},\n\tmigrate: migrateToQuoteV2,\n};\n\nconst v2 = {\n\tattributes: {\n\t\tvalue: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'blockquote',\n\t\t\tmultiline: 'p',\n\t\t\tdefault: '',\n\t\t},\n\t\tcitation: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'cite',\n\t\t\tdefault: '',\n\t\t},\n\t\talign: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tmigrate: migrateToQuoteV2,\n\tsave( { attributes } ) {\n\t\tconst { align, value, citation } = attributes;\n\n\t\treturn (\n\t\t\t<blockquote style={ { textAlign: align ? align : null } }>\n\t\t\t\t<RichText.Content multiline value={ value } />\n\t\t\t\t{ ! RichText.isEmpty( citation ) && (\n\t\t\t\t\t<RichText.Content tagName=\"cite\" value={ citation } />\n\t\t\t\t) }\n\t\t\t</blockquote>\n\t\t);\n\t},\n};\n\nconst v1 = {\n\tattributes: {\n\t\tvalue: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'blockquote',\n\t\t\tmultiline: 'p',\n\t\t\tdefault: '',\n\t\t},\n\t\tcitation: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'cite',\n\t\t\tdefault: '',\n\t\t},\n\t\talign: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tstyle: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 1,\n\t\t},\n\t},\n\n\tmigrate( attributes ) {\n\t\tif ( attributes.style === 2 ) {\n\t\t\tconst { style, ...restAttributes } = attributes;\n\t\t\treturn migrateToQuoteV2( {\n\t\t\t\t...restAttributes,\n\t\t\t\tclassName: attributes.className\n\t\t\t\t\t? attributes.className + ' is-style-large'\n\t\t\t\t\t: 'is-style-large',\n\t\t\t} );\n\t\t}\n\n\t\treturn migrateToQuoteV2( attributes );\n\t},\n\n\tsave( { attributes } ) {\n\t\tconst { align, value, citation, style } = attributes;\n\n\t\treturn (\n\t\t\t<blockquote\n\t\t\t\tclassName={ style === 2 ? 'is-large' : '' }\n\t\t\t\tstyle={ { textAlign: align ? align : null } }\n\t\t\t>\n\t\t\t\t<RichText.Content multiline value={ value } />\n\t\t\t\t{ ! RichText.isEmpty( citation ) && (\n\t\t\t\t\t<RichText.Content tagName=\"cite\" value={ citation } />\n\t\t\t\t) }\n\t\t\t</blockquote>\n\t\t);\n\t},\n};\n\nconst v0 = {\n\tattributes: {\n\t\tvalue: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'blockquote',\n\t\t\tmultiline: 'p',\n\t\t\tdefault: '',\n\t\t},\n\t\tcitation: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'footer',\n\t\t\tdefault: '',\n\t\t},\n\t\talign: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tstyle: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 1,\n\t\t},\n\t},\n\n\tmigrate( attributes ) {\n\t\tif ( ! isNaN( parseInt( attributes.style ) ) ) {\n\t\t\tconst { style, ...restAttributes } = attributes;\n\t\t\treturn migrateToQuoteV2( {\n\t\t\t\t...restAttributes,\n\t\t\t} );\n\t\t}\n\n\t\treturn migrateToQuoteV2( attributes );\n\t},\n\n\tsave( { attributes } ) {\n\t\tconst { align, value, citation, style } = attributes;\n\n\t\treturn (\n\t\t\t<blockquote\n\t\t\t\tclassName={ `blocks-quote-style-${ style }` }\n\t\t\t\tstyle={ { textAlign: align ? align : null } }\n\t\t\t>\n\t\t\t\t<RichText.Content multiline value={ value } />\n\t\t\t\t{ ! RichText.isEmpty( citation ) && (\n\t\t\t\t\t<RichText.Content tagName=\"footer\" value={ citation } />\n\t\t\t\t) }\n\t\t\t</blockquote>\n\t\t);\n\t},\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v3, v2, v1, v0 ];\n","/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tRichText,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { BlockQuotation } from '@wordpress/components';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { Platform, useEffect } from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport { migrateToQuoteV2 } from './deprecated';\n\nconst isWebPlatform = Platform.OS === 'web';\n\nconst TEMPLATE = [ [ 'core/paragraph', {} ] ];\n\n/**\n * At the moment, deprecations don't handle create blocks from attributes\n * (like when using CPT templates). For this reason, this hook is necessary\n * to avoid breaking templates using the old quote block format.\n *\n * @param {Object} attributes Block attributes.\n * @param {string} clientId   Block client ID.\n */\nconst useMigrateOnLoad = ( attributes, clientId ) => {\n\tconst registry = useRegistry();\n\tconst { updateBlockAttributes, replaceInnerBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tuseEffect( () => {\n\t\t// As soon as the block is loaded, migrate it to the new version.\n\n\t\tif ( ! attributes.value ) {\n\t\t\t// No need to migrate if it doesn't have the value attribute.\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ newAttributes, newInnerBlocks ] =\n\t\t\tmigrateToQuoteV2( attributes );\n\n\t\tdeprecated( 'Value attribute on the quote block', {\n\t\t\tsince: '6.0',\n\t\t\tversion: '6.5',\n\t\t\talternative: 'inner blocks',\n\t\t} );\n\n\t\tregistry.batch( () => {\n\t\t\tupdateBlockAttributes( clientId, newAttributes );\n\t\t\treplaceInnerBlocks( clientId, newInnerBlocks );\n\t\t} );\n\t}, [ attributes.value ] );\n};\n\nexport default function QuoteEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tclientId,\n\tclassName,\n\tstyle,\n} ) {\n\tconst { align, citation } = attributes;\n\n\tuseMigrateOnLoad( attributes, clientId );\n\n\tconst hasSelection = useSelect( ( select ) => {\n\t\tconst { isBlockSelected, hasSelectedInnerBlock } =\n\t\t\tselect( blockEditorStore );\n\t\treturn hasSelectedInnerBlock( clientId ) || isBlockSelected( clientId );\n\t}, [] );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classNames( className, {\n\t\t\t[ `has-text-align-${ align }` ]: align,\n\t\t} ),\n\t\t...( ! isWebPlatform && { style } ),\n\t} );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t\ttemplateInsertUpdatesSelection: true,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ align }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { align: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<BlockQuotation { ...innerBlocksProps }>\n\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t{ ( ! RichText.isEmpty( citation ) || hasSelection ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tidentifier=\"citation\"\n\t\t\t\t\t\ttagName={ isWebPlatform ? 'cite' : undefined }\n\t\t\t\t\t\tstyle={ { display: 'block' } }\n\t\t\t\t\t\tvalue={ citation }\n\t\t\t\t\t\tonChange={ ( nextCitation ) => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tcitation: nextCitation,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t__unstableMobileNoFocusOnMount\n\t\t\t\t\t\taria-label={ __( 'Quote citation' ) }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\t// translators: placeholder text used for the\n\t\t\t\t\t\t\t// citation\n\t\t\t\t\t\t\t__( 'Add citation' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclassName=\"wp-block-quote__citation\"\n\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{ ...( ! isWebPlatform ? { textAlign: align } : {} ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockQuotation>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/pullquote' ],\n\t\t\ttransform: ( { value, citation, anchor, fontSize, style } ) => {\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/quote',\n\t\t\t\t\t{\n\t\t\t\t\t\tcitation,\n\t\t\t\t\t\tanchor,\n\t\t\t\t\t\tfontSize,\n\t\t\t\t\t\tstyle,\n\t\t\t\t\t},\n\t\t\t\t\t[ createBlock( 'core/paragraph', { content: value } ) ]\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/group' ],\n\t\t\ttransform: ( { anchor }, innerBlocks ) =>\n\t\t\t\tcreateBlock( 'core/quote', { anchor }, innerBlocks ),\n\t\t},\n\t\t{\n\t\t\ttype: 'prefix',\n\t\t\tprefix: '>',\n\t\t\ttransform: ( content ) =>\n\t\t\t\tcreateBlock( 'core/quote', {}, [\n\t\t\t\t\tcreateBlock( 'core/paragraph', { content } ),\n\t\t\t\t] ),\n\t\t},\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tschema: () => ( {\n\t\t\t\tblockquote: {\n\t\t\t\t\tchildren: '*',\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tselector: 'blockquote',\n\t\t\ttransform: ( node, handler ) => {\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/quote',\n\t\t\t\t\t// Don't try to parse any `cite` out of this content.\n\t\t\t\t\t// * There may be more than one cite.\n\t\t\t\t\t// * There may be more attribution text than just the cite.\n\t\t\t\t\t// * If the cite is nested in the quoted text, it's wrong to\n\t\t\t\t\t//   remove it.\n\t\t\t\t\t{},\n\t\t\t\t\thandler( {\n\t\t\t\t\t\tHTML: node.innerHTML,\n\t\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ '*' ],\n\t\t\tisMatch: ( {}, blocks ) => {\n\t\t\t\t// When a single block is selected make the tranformation\n\t\t\t\t// available only to specific blocks that make sense.\n\t\t\t\tif ( blocks.length === 1 ) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t'core/paragraph',\n\t\t\t\t\t\t'core/heading',\n\t\t\t\t\t\t'core/list',\n\t\t\t\t\t\t'core/pullquote',\n\t\t\t\t\t].includes( blocks[ 0 ].name );\n\t\t\t\t}\n\t\t\t\treturn ! blocks.some( ( { name } ) => name === 'core/quote' );\n\t\t\t},\n\t\t\t__experimentalConvert: ( blocks ) =>\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/quote',\n\t\t\t\t\t{},\n\t\t\t\t\tblocks.map( ( block ) =>\n\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\tblock.attributes,\n\t\t\t\t\t\t\tblock.innerBlocks\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/pullquote' ],\n\t\t\tisMatch: ( {}, block ) => {\n\t\t\t\treturn block.innerBlocks.every(\n\t\t\t\t\t( { name } ) => name === 'core/paragraph'\n\t\t\t\t);\n\t\t\t},\n\t\t\ttransform: (\n\t\t\t\t{ citation, anchor, fontSize, style },\n\t\t\t\tinnerBlocks\n\t\t\t) => {\n\t\t\t\tconst value = innerBlocks\n\t\t\t\t\t.map( ( { attributes } ) => `${ attributes.content }` )\n\t\t\t\t\t.join( '<br>' );\n\t\t\t\treturn createBlock( 'core/pullquote', {\n\t\t\t\t\tvalue,\n\t\t\t\t\tcitation,\n\t\t\t\t\tanchor,\n\t\t\t\t\tfontSize,\n\t\t\t\t\tstyle,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/group' ],\n\t\t\ttransform: ( { citation, anchor }, innerBlocks ) =>\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{ anchor },\n\t\t\t\t\tcitation\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t...innerBlocks,\n\t\t\t\t\t\t\t\tcreateBlock( 'core/paragraph', {\n\t\t\t\t\t\t\t\t\tcontent: citation,\n\t\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t  ]\n\t\t\t\t\t\t: innerBlocks\n\t\t\t\t),\n\t\t},\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ '*' ],\n\t\t\ttransform: ( { citation }, innerBlocks ) =>\n\t\t\t\tcitation\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t...innerBlocks,\n\t\t\t\t\t\t\tcreateBlock( 'core/paragraph', {\n\t\t\t\t\t\t\t\tcontent: citation,\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t  ]\n\t\t\t\t\t: innerBlocks,\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { quote 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\tcitation: 'Julio Cortázar',\n\t\t},\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/paragraph',\n\t\t\t\tattributes: {\n\t\t\t\t\tcontent: __( 'In quoting others, we cite ourselves.' ),\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { InnerBlocks, RichText, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { align, citation } = attributes;\n\n\tconst className = classNames( {\n\t\t[ `has-text-align-${ align }` ]: align,\n\t} );\n\n\treturn (\n\t\t<blockquote { ...useBlockProps.save( { className } ) }>\n\t\t\t<InnerBlocks.Content />\n\t\t\t{ ! RichText.isEmpty( citation ) && (\n\t\t\t\t<RichText.Content tagName=\"cite\" value={ citation } />\n\t\t\t) }\n\t\t</blockquote>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst symbol = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z\" />\n\t</SVG>\n);\n\nexport default symbol;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"reusableBlocks\"];","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst ungroup = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18 4h-7c-1.1 0-2 .9-2 2v7c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 9c0 .3-.2.5-.5.5h-7c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h7c.3 0 .5.2.5.5v7zm-5 5c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-7c0-.3.2-.5.5-.5h1V9H6c-1.1 0-2 .9-2 2v7c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2v-1h-1.5v1z\" />\n\t</SVG>\n);\n\nexport default ungroup;\n","/**\n * WordPress dependencies\n */\nimport { symbol 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;\n\nexport { metadata, name };\n\nexport const settings = {\n\tedit,\n\ticon,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tuseEntityBlockEditor,\n\tuseEntityProp,\n\tuseEntityRecord,\n} from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tToolbarGroup,\n\tToolbarButton,\n\tTextControl,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentalUseHasRecursion as useHasRecursion,\n\tInnerBlocks,\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { store as reusableBlocksStore } from '@wordpress/reusable-blocks';\nimport { ungroup } from '@wordpress/icons';\n\nexport default function ReusableBlockEdit( { attributes: { ref }, clientId } ) {\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\tconst canRemove = useSelect(\n\t\t( select ) => select( blockEditorStore ).canRemoveBlock( clientId ),\n\t\t[ clientId ]\n\t);\n\n\tconst { __experimentalConvertBlockToStatic: convertBlockToStatic } =\n\t\tuseDispatch( reusableBlocksStore );\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_block',\n\t\t{ id: ref }\n\t);\n\tconst [ title, setTitle ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_block',\n\t\t'title',\n\t\tref\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: 'block-library-block__reusable-block-container',\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput,\n\t\tonChange,\n\t\trenderAppender: blocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\tif ( hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t\t</Warning>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Placeholder>\n\t\t\t\t\t<Spinner />\n\t\t\t\t</Placeholder>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t{ canRemove && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ () => convertBlockToStatic( clientId ) }\n\t\t\t\t\t\t\tlabel={ __( 'Convert to regular blocks' ) }\n\t\t\t\t\t\t\ticon={ ungroup }\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</RecursionProvider>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { link 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","/**\n * WordPress dependencies\n */\nimport {\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { ToggleControl, PanelBody } from '@wordpress/components';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\nexport default function ReadMore( {\n\tattributes: { content, linkTarget },\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<RichText\n\t\t\t\ttagName=\"a\"\n\t\t\t\taria-label={ __( '“Read more” link text' ) }\n\t\t\t\tplaceholder={ __( 'Read more' ) }\n\t\t\t\tvalue={ content }\n\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\tsetAttributes( { content: newValue } )\n\t\t\t\t}\n\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t\t}\n\t\t\t\twithoutInteractiveFormatting={ true }\n\t\t\t\t{ ...blockProps }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst rss = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M5 10.2h-.8v1.5H5c1.9 0 3.8.8 5.1 2.1 1.4 1.4 2.1 3.2 2.1 5.1v.8h1.5V19c0-2.3-.9-4.5-2.6-6.2-1.6-1.6-3.8-2.6-6.1-2.6zm10.4-1.6C12.6 5.8 8.9 4.2 5 4.2h-.8v1.5H5c3.5 0 6.9 1.4 9.4 3.9s3.9 5.8 3.9 9.4v.8h1.5V19c0-3.9-1.6-7.6-4.4-10.4zM4 20h3v-3H4v3z\" />\n\t</SVG>\n);\n\nexport default rss;\n","/**\n * WordPress dependencies\n */\nimport { rss 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;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tfeedURL: 'https://wordpress.org',\n\t\t},\n\t},\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport {\n\tButton,\n\tDisabled,\n\tPanelBody,\n\tPlaceholder,\n\tRangeControl,\n\tTextControl,\n\tToggleControl,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { grid, list, edit, rss } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { prependHTTP } from '@wordpress/url';\nimport ServerSideRender from '@wordpress/server-side-render';\n\nconst DEFAULT_MIN_ITEMS = 1;\nconst DEFAULT_MAX_ITEMS = 20;\n\nexport default function RSSEdit( { attributes, setAttributes } ) {\n\tconst [ isEditing, setIsEditing ] = useState( ! attributes.feedURL );\n\n\tconst {\n\t\tblockLayout,\n\t\tcolumns,\n\t\tdisplayAuthor,\n\t\tdisplayDate,\n\t\tdisplayExcerpt,\n\t\texcerptLength,\n\t\tfeedURL,\n\t\titemsToShow,\n\t} = attributes;\n\n\tfunction toggleAttribute( propName ) {\n\t\treturn () => {\n\t\t\tconst value = attributes[ propName ];\n\n\t\t\tsetAttributes( { [ propName ]: ! value } );\n\t\t};\n\t}\n\n\tfunction onSubmitURL( event ) {\n\t\tevent.preventDefault();\n\n\t\tif ( feedURL ) {\n\t\t\tsetAttributes( { feedURL: prependHTTP( feedURL ) } );\n\t\t\tsetIsEditing( false );\n\t\t}\n\t}\n\n\tconst blockProps = useBlockProps();\n\n\tif ( isEditing ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Placeholder icon={ rss } label=\"RSS\">\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={ onSubmitURL }\n\t\t\t\t\t\tclassName=\"wp-block-rss__placeholder-form\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tplaceholder={ __( 'Enter URL here…' ) }\n\t\t\t\t\t\t\tvalue={ feedURL }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { feedURL: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclassName=\"wp-block-rss__placeholder-input\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t{ __( 'Use URL' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</form>\n\t\t\t\t</Placeholder>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst toolbarControls = [\n\t\t{\n\t\t\ticon: edit,\n\t\t\ttitle: __( 'Edit RSS URL' ),\n\t\t\tonClick: () => setIsEditing( true ),\n\t\t},\n\t\t{\n\t\t\ticon: list,\n\t\t\ttitle: __( 'List view' ),\n\t\t\tonClick: () => setAttributes( { blockLayout: 'list' } ),\n\t\t\tisActive: blockLayout === 'list',\n\t\t},\n\t\t{\n\t\t\ticon: grid,\n\t\t\ttitle: __( 'Grid view' ),\n\t\t\tonClick: () => setAttributes( { blockLayout: 'grid' } ),\n\t\t\tisActive: blockLayout === 'grid',\n\t\t},\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup controls={ toolbarControls } />\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tlabel={ __( 'Number of items' ) }\n\t\t\t\t\t\tvalue={ itemsToShow }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { itemsToShow: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ DEFAULT_MIN_ITEMS }\n\t\t\t\t\t\tmax={ DEFAULT_MAX_ITEMS }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display author' ) }\n\t\t\t\t\t\tchecked={ displayAuthor }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'displayAuthor' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display date' ) }\n\t\t\t\t\t\tchecked={ displayDate }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'displayDate' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Display excerpt' ) }\n\t\t\t\t\t\tchecked={ displayExcerpt }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'displayExcerpt' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ displayExcerpt && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\tlabel={ __( 'Max number of words in excerpt' ) }\n\t\t\t\t\t\t\tvalue={ excerptLength }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { excerptLength: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmin={ 10 }\n\t\t\t\t\t\t\tmax={ 100 }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ blockLayout === 'grid' && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\tvalue={ columns }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { columns: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmin={ 2 }\n\t\t\t\t\t\t\tmax={ 6 }\n\t\t\t\t\t\t\trequired\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\t<div { ...blockProps }>\n\t\t\t\t<Disabled>\n\t\t\t\t\t<ServerSideRender\n\t\t\t\t\t\tblock=\"core/rss\"\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t/>\n\t\t\t\t</Disabled>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst search = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M13.5 6C10.5 6 8 8.5 8 11.5c0 1.1.3 2.1.9 3l-3.4 3 1 1.1 3.4-2.9c1 .9 2.2 1.4 3.6 1.4 3 0 5.5-2.5 5.5-5.5C19 8.5 16.5 6 13.5 6zm0 9.5c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z\" />\n\t</SVG>\n);\n\nexport default search;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Rect } from '@wordpress/components';\n\nexport const buttonOnly = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Rect x=\"7\" y=\"10\" width=\"10\" height=\"4\" rx=\"1\" fill=\"currentColor\" />\n\t</SVG>\n);\n\nexport const buttonOutside = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Rect\n\t\t\tx=\"4.75\"\n\t\t\ty=\"15.25\"\n\t\t\twidth=\"6.5\"\n\t\t\theight=\"9.5\"\n\t\t\ttransform=\"rotate(-90 4.75 15.25)\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t\tfill=\"none\"\n\t\t/>\n\t\t<Rect x=\"16\" y=\"10\" width=\"4\" height=\"4\" rx=\"1\" fill=\"currentColor\" />\n\t</SVG>\n);\n\nexport const buttonInside = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Rect\n\t\t\tx=\"4.75\"\n\t\t\ty=\"15.25\"\n\t\t\twidth=\"6.5\"\n\t\t\theight=\"14.5\"\n\t\t\ttransform=\"rotate(-90 4.75 15.25)\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t\tfill=\"none\"\n\t\t/>\n\t\t<Rect x=\"14\" y=\"10\" width=\"4\" height=\"4\" rx=\"1\" fill=\"currentColor\" />\n\t</SVG>\n);\n\nexport const noButton = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Rect\n\t\t\tx=\"4.75\"\n\t\t\ty=\"15.25\"\n\t\t\twidth=\"6.5\"\n\t\t\theight=\"14.5\"\n\t\t\ttransform=\"rotate(-90 4.75 15.25)\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tfill=\"none\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t/>\n\t</SVG>\n);\n\nexport const buttonWithIcon = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Rect\n\t\t\tx=\"4.75\"\n\t\t\ty=\"7.75\"\n\t\t\twidth=\"14.5\"\n\t\t\theight=\"8.5\"\n\t\t\trx=\"1.25\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tfill=\"none\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t/>\n\t\t<Rect x=\"8\" y=\"11\" width=\"8\" height=\"2\" fill=\"currentColor\" />\n\t</SVG>\n);\n\nexport const toggleLabel = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Rect\n\t\t\tx=\"4.75\"\n\t\t\ty=\"17.25\"\n\t\t\twidth=\"5.5\"\n\t\t\theight=\"14.5\"\n\t\t\ttransform=\"rotate(-90 4.75 17.25)\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tfill=\"none\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t/>\n\t\t<Rect x=\"4\" y=\"7\" width=\"10\" height=\"2\" fill=\"currentColor\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nconst variations = [\n\t{\n\t\tname: 'default',\n\t\tisDefault: true,\n\t\tattributes: { buttonText: __( 'Search' ), label: __( 'Search' ) },\n\t},\n];\n\nexport default variations;\n","/**\n * WordPress dependencies\n */\nimport { search 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 variations from './variations';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {},\n\tvariations,\n\tedit,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalUseColorProps as useColorProps,\n\tgetTypographyClassesAndStyles as useTypographyProps,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\nimport {\n\tToolbarDropdownMenu,\n\tToolbarGroup,\n\tButton,\n\tButtonGroup,\n\tToolbarButton,\n\tResizableBox,\n\tPanelBody,\n\tBaseControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalUnitControl as UnitControl,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { Icon, search } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport {\n\tbuttonOnly,\n\tbuttonOutside,\n\tbuttonInside,\n\tnoButton,\n\tbuttonWithIcon,\n\ttoggleLabel,\n} from './icons';\nimport {\n\tPC_WIDTH_DEFAULT,\n\tPX_WIDTH_DEFAULT,\n\tMIN_WIDTH,\n\tMIN_WIDTH_UNIT,\n} from './utils.js';\n\n// Used to calculate border radius adjustment to avoid \"fat\" corners when\n// button is placed inside wrapper.\nconst DEFAULT_INNER_PADDING = '4px';\n\nexport default function SearchEdit( {\n\tclassName,\n\tattributes,\n\tsetAttributes,\n\ttoggleSelection,\n\tisSelected,\n\tclientId,\n} ) {\n\tconst {\n\t\tlabel,\n\t\tshowLabel,\n\t\tplaceholder,\n\t\twidth,\n\t\twidthUnit,\n\t\talign,\n\t\tbuttonText,\n\t\tbuttonPosition,\n\t\tbuttonUseIcon,\n\t\tstyle,\n\t} = attributes;\n\n\tconst insertedInNavigationBlock = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockParentsByBlockName, wasBlockJustInserted } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn (\n\t\t\t\t!! getBlockParentsByBlockName( clientId, 'core/navigation' )\n\t\t\t\t\t?.length && wasBlockJustInserted( clientId )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\tuseEffect( () => {\n\t\tif ( ! insertedInNavigationBlock ) return;\n\t\t// This side-effect should not create an undo level.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetAttributes( {\n\t\t\tshowLabel: false,\n\t\t\tbuttonUseIcon: true,\n\t\t\tbuttonPosition: 'button-inside',\n\t\t} );\n\t}, [ insertedInNavigationBlock ] );\n\tconst borderRadius = style?.border?.radius;\n\tconst borderProps = useBorderProps( attributes );\n\n\t// Check for old deprecated numerical border radius. Done as a separate\n\t// check so that a borderRadius style won't overwrite the longhand\n\t// per-corner styles.\n\tif ( typeof borderRadius === 'number' ) {\n\t\tborderProps.style.borderRadius = `${ borderRadius }px`;\n\t}\n\n\tconst colorProps = useColorProps( attributes );\n\tconst typographyProps = useTypographyProps( attributes );\n\tconst unitControlInstanceId = useInstanceId( UnitControl );\n\tconst unitControlInputId = `wp-block-search__width-${ unitControlInstanceId }`;\n\tconst isButtonPositionInside = 'button-inside' === buttonPosition;\n\tconst isButtonPositionOutside = 'button-outside' === buttonPosition;\n\tconst hasNoButton = 'no-button' === buttonPosition;\n\tconst hasOnlyButton = 'button-only' === buttonPosition;\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: [ '%', 'px' ],\n\t\tdefaultValues: { '%': PC_WIDTH_DEFAULT, px: PX_WIDTH_DEFAULT },\n\t} );\n\n\tconst getBlockClassNames = () => {\n\t\treturn classnames(\n\t\t\tclassName,\n\t\t\tisButtonPositionInside\n\t\t\t\t? 'wp-block-search__button-inside'\n\t\t\t\t: undefined,\n\t\t\tisButtonPositionOutside\n\t\t\t\t? 'wp-block-search__button-outside'\n\t\t\t\t: undefined,\n\t\t\thasNoButton ? 'wp-block-search__no-button' : undefined,\n\t\t\thasOnlyButton ? 'wp-block-search__button-only' : undefined,\n\t\t\t! buttonUseIcon && ! hasNoButton\n\t\t\t\t? 'wp-block-search__text-button'\n\t\t\t\t: undefined,\n\t\t\tbuttonUseIcon && ! hasNoButton\n\t\t\t\t? 'wp-block-search__icon-button'\n\t\t\t\t: undefined\n\t\t);\n\t};\n\n\tconst buttonPositionControls = [\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'Button outside' ),\n\t\t\tisActive: buttonPosition === 'button-outside',\n\t\t\ticon: buttonOutside,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'button-outside',\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'Button inside' ),\n\t\t\tisActive: buttonPosition === 'button-inside',\n\t\t\ticon: buttonInside,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'button-inside',\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\trole: 'menuitemradio',\n\t\t\ttitle: __( 'No button' ),\n\t\t\tisActive: buttonPosition === 'no-button',\n\t\t\ticon: noButton,\n\t\t\tonClick: () => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tbuttonPosition: 'no-button',\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t];\n\n\tconst getButtonPositionIcon = () => {\n\t\tswitch ( buttonPosition ) {\n\t\t\tcase 'button-inside':\n\t\t\t\treturn buttonInside;\n\t\t\tcase 'button-outside':\n\t\t\t\treturn buttonOutside;\n\t\t\tcase 'no-button':\n\t\t\t\treturn noButton;\n\t\t\tcase 'button-only':\n\t\t\t\treturn buttonOnly;\n\t\t}\n\t};\n\n\tconst getResizableSides = () => {\n\t\tif ( hasOnlyButton ) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn {\n\t\t\tright: align !== 'right',\n\t\t\tleft: align === 'right',\n\t\t};\n\t};\n\n\tconst renderTextField = () => {\n\t\t// If the input is inside the wrapper, the wrapper gets the border color styles/classes, not the input control.\n\t\tconst textFieldClasses = classnames(\n\t\t\t'wp-block-search__input',\n\t\t\tisButtonPositionInside ? undefined : borderProps.className,\n\t\t\ttypographyProps.className\n\t\t);\n\t\tconst textFieldStyles = {\n\t\t\t...( isButtonPositionInside\n\t\t\t\t? { borderRadius }\n\t\t\t\t: borderProps.style ),\n\t\t\t...typographyProps.style,\n\t\t\ttextDecoration: undefined,\n\t\t};\n\n\t\treturn (\n\t\t\t<input\n\t\t\t\ttype=\"search\"\n\t\t\t\tclassName={ textFieldClasses }\n\t\t\t\tstyle={ textFieldStyles }\n\t\t\t\taria-label={ __( 'Optional placeholder text' ) }\n\t\t\t\t// We hide the placeholder field's placeholder when there is a value. This\n\t\t\t\t// stops screen readers from reading the placeholder field's placeholder\n\t\t\t\t// which is confusing.\n\t\t\t\tplaceholder={\n\t\t\t\t\tplaceholder ? undefined : __( 'Optional placeholder…' )\n\t\t\t\t}\n\t\t\t\tvalue={ placeholder }\n\t\t\t\tonChange={ ( event ) =>\n\t\t\t\t\tsetAttributes( { placeholder: event.target.value } )\n\t\t\t\t}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst renderButton = () => {\n\t\t// If the button is inside the wrapper, the wrapper gets the border color styles/classes, not the button.\n\t\tconst buttonClasses = classnames(\n\t\t\t'wp-block-search__button',\n\t\t\tcolorProps.className,\n\t\t\ttypographyProps.className,\n\t\t\tisButtonPositionInside ? undefined : borderProps.className,\n\t\t\tbuttonUseIcon ? 'has-icon' : undefined,\n\t\t\t__experimentalGetElementClassName( 'button' )\n\t\t);\n\t\tconst buttonStyles = {\n\t\t\t...colorProps.style,\n\t\t\t...typographyProps.style,\n\t\t\t...( isButtonPositionInside\n\t\t\t\t? { borderRadius }\n\t\t\t\t: borderProps.style ),\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ buttonUseIcon && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\tstyle={ buttonStyles }\n\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\tbuttonText\n\t\t\t\t\t\t\t\t? stripHTML( buttonText )\n\t\t\t\t\t\t\t\t: __( 'Search' )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon icon={ search } />\n\t\t\t\t\t</button>\n\t\t\t\t) }\n\n\t\t\t\t{ ! buttonUseIcon && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tclassName={ buttonClasses }\n\t\t\t\t\t\tstyle={ buttonStyles }\n\t\t\t\t\t\taria-label={ __( 'Button text' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Add button text…' ) }\n\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\tvalue={ buttonText }\n\t\t\t\t\t\tonChange={ ( html ) =>\n\t\t\t\t\t\t\tsetAttributes( { buttonText: html } )\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};\n\n\tconst controls = (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ttitle={ __( 'Toggle search label' ) }\n\t\t\t\t\t\ticon={ toggleLabel }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowLabel: ! showLabel,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tclassName={ showLabel ? 'is-pressed' : undefined }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToolbarDropdownMenu\n\t\t\t\t\t\ticon={ getButtonPositionIcon() }\n\t\t\t\t\t\tlabel={ __( 'Change button position' ) }\n\t\t\t\t\t\tcontrols={ buttonPositionControls }\n\t\t\t\t\t/>\n\t\t\t\t\t{ ! hasNoButton && (\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\ttitle={ __( 'Use button with icon' ) }\n\t\t\t\t\t\t\ticon={ buttonWithIcon }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tbuttonUseIcon: ! buttonUseIcon,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\tbuttonUseIcon ? 'is-pressed' : undefined\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</ToolbarGroup>\n\t\t\t</BlockControls>\n\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Display Settings' ) }>\n\t\t\t\t\t<BaseControl\n\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\tid={ unitControlInputId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tid={ unitControlInputId }\n\t\t\t\t\t\t\tmin={ `${ MIN_WIDTH }${ MIN_WIDTH_UNIT }` }\n\t\t\t\t\t\t\tonChange={ ( newWidth ) => {\n\t\t\t\t\t\t\t\tconst filteredWidth =\n\t\t\t\t\t\t\t\t\twidthUnit === '%' &&\n\t\t\t\t\t\t\t\t\tparseInt( newWidth, 10 ) > 100\n\t\t\t\t\t\t\t\t\t\t? 100\n\t\t\t\t\t\t\t\t\t\t: newWidth;\n\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\twidth: parseInt( filteredWidth, 10 ),\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonUnitChange={ ( newUnit ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\t\t\t\t'%' === newUnit\n\t\t\t\t\t\t\t\t\t\t\t? PC_WIDTH_DEFAULT\n\t\t\t\t\t\t\t\t\t\t\t: PX_WIDTH_DEFAULT,\n\t\t\t\t\t\t\t\t\twidthUnit: newUnit,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tstyle={ { maxWidth: 80 } }\n\t\t\t\t\t\t\tvalue={ `${ width }${ widthUnit }` }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<ButtonGroup\n\t\t\t\t\t\t\tclassName=\"wp-block-search__components-button-group\"\n\t\t\t\t\t\t\taria-label={ __( 'Percentage Width' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ [ 25, 50, 75, 100 ].map( ( widthValue ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tkey={ widthValue }\n\t\t\t\t\t\t\t\t\t\tisSmall\n\t\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\t\t`${ widthValue }%` ===\n\t\t\t\t\t\t\t\t\t\t\t`${ width }${ widthUnit }`\n\t\t\t\t\t\t\t\t\t\t\t\t? 'primary'\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\twidth: widthValue,\n\t\t\t\t\t\t\t\t\t\t\t\twidthUnit: '%',\n\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ widthValue }%\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</ButtonGroup>\n\t\t\t\t\t</BaseControl>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n\n\tconst padBorderRadius = ( radius ) =>\n\t\tradius ? `calc(${ radius } + ${ DEFAULT_INNER_PADDING })` : undefined;\n\n\tconst getWrapperStyles = () => {\n\t\tconst styles = isButtonPositionInside\n\t\t\t? borderProps.style\n\t\t\t: {\n\t\t\t\t\tborderRadius: borderProps.style?.borderRadius,\n\t\t\t\t\tborderTopLeftRadius: borderProps.style?.borderTopLeftRadius,\n\t\t\t\t\tborderTopRightRadius:\n\t\t\t\t\t\tborderProps.style?.borderTopRightRadius,\n\t\t\t\t\tborderBottomLeftRadius:\n\t\t\t\t\t\tborderProps.style?.borderBottomLeftRadius,\n\t\t\t\t\tborderBottomRightRadius:\n\t\t\t\t\t\tborderProps.style?.borderBottomRightRadius,\n\t\t\t  };\n\n\t\tconst isNonZeroBorderRadius =\n\t\t\tborderRadius !== undefined && parseInt( borderRadius, 10 ) !== 0;\n\n\t\tif ( isButtonPositionInside && isNonZeroBorderRadius ) {\n\t\t\t// We have button inside wrapper and a border radius value to apply.\n\t\t\t// Add default padding so we don't get \"fat\" corners.\n\t\t\t//\n\t\t\t// CSS calc() is used here to support non-pixel units. The inline\n\t\t\t// style using calc() will only apply if both values have units.\n\n\t\t\tif ( typeof borderRadius === 'object' ) {\n\t\t\t\t// Individual corner border radii present.\n\t\t\t\tconst { topLeft, topRight, bottomLeft, bottomRight } =\n\t\t\t\t\tborderRadius;\n\n\t\t\t\treturn {\n\t\t\t\t\t...styles,\n\t\t\t\t\tborderTopLeftRadius: padBorderRadius( topLeft ),\n\t\t\t\t\tborderTopRightRadius: padBorderRadius( topRight ),\n\t\t\t\t\tborderBottomLeftRadius: padBorderRadius( bottomLeft ),\n\t\t\t\t\tborderBottomRightRadius: padBorderRadius( bottomRight ),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// The inline style using calc() will only apply if both values\n\t\t\t// supplied to calc() have units. Deprecated block's may have\n\t\t\t// unitless integer.\n\t\t\tconst radius = Number.isInteger( borderRadius )\n\t\t\t\t? `${ borderRadius }px`\n\t\t\t\t: borderRadius;\n\n\t\t\tstyles.borderRadius = `calc(${ radius } + ${ DEFAULT_INNER_PADDING })`;\n\t\t}\n\n\t\treturn styles;\n\t};\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: getBlockClassNames(),\n\t\tstyle: {\n\t\t\t...typographyProps.style,\n\t\t\t// Input opts out of text decoration.\n\t\t\ttextDecoration: undefined,\n\t\t},\n\t} );\n\n\tconst labelClassnames = classnames(\n\t\t'wp-block-search__label',\n\t\ttypographyProps.className\n\t);\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ controls }\n\n\t\t\t{ showLabel && (\n\t\t\t\t<RichText\n\t\t\t\t\tclassName={ labelClassnames }\n\t\t\t\t\taria-label={ __( 'Label text' ) }\n\t\t\t\t\tplaceholder={ __( 'Add label…' ) }\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\tonChange={ ( html ) => setAttributes( { label: html } ) }\n\t\t\t\t\tstyle={ typographyProps.style }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<ResizableBox\n\t\t\t\tsize={ {\n\t\t\t\t\twidth: `${ width }${ widthUnit }`,\n\t\t\t\t} }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'wp-block-search__inside-wrapper',\n\t\t\t\t\tisButtonPositionInside ? borderProps.className : undefined\n\t\t\t\t) }\n\t\t\t\tstyle={ getWrapperStyles() }\n\t\t\t\tminWidth={ MIN_WIDTH }\n\t\t\t\tenable={ getResizableSides() }\n\t\t\t\tonResizeStart={ ( event, direction, elt ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\twidth: parseInt( elt.offsetWidth, 10 ),\n\t\t\t\t\t\twidthUnit: 'px',\n\t\t\t\t\t} );\n\t\t\t\t\ttoggleSelection( false );\n\t\t\t\t} }\n\t\t\t\tonResizeStop={ ( event, direction, elt, delta ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\twidth: parseInt( width + delta.width, 10 ),\n\t\t\t\t\t} );\n\t\t\t\t\ttoggleSelection( true );\n\t\t\t\t} }\n\t\t\t\tshowHandle={ isSelected }\n\t\t\t>\n\t\t\t\t{ ( isButtonPositionInside || isButtonPositionOutside ) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ renderTextField() }\n\t\t\t\t\t\t{ renderButton() }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\n\t\t\t\t{ hasOnlyButton && renderButton() }\n\t\t\t\t{ hasNoButton && renderTextField() }\n\t\t\t</ResizableBox>\n\t\t</div>\n\t);\n}\n","/**\n * Constants\n */\nexport const PC_WIDTH_DEFAULT = 50;\nexport const PX_WIDTH_DEFAULT = 350;\nexport const MIN_WIDTH = 220;\nexport const MIN_WIDTH_UNIT = 'px';\n\n/**\n * Returns a boolean whether passed unit is percentage\n *\n * @param {string} unit Block width unit.\n *\n * @return {boolean} \tWhether unit is '%'.\n */\nexport function isPercentageUnit( unit ) {\n\treturn unit === '%';\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst separator = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M20.2 7v4H3.8V7H2.2v9h1.6v-3.5h16.4V16h1.6V7z\" />\n\t</SVG>\n);\n\nexport default separator;\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'enter',\n\t\t\tregExp: /^-{3,}$/,\n\t\t\ttransform: () => createBlock( 'core/separator' ),\n\t\t},\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tselector: 'hr',\n\t\t\tschema: {\n\t\t\t\thr: {},\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getColorClassName, useBlockProps } from '@wordpress/block-editor';\n\nconst v1 = {\n\tattributes: {\n\t\tcolor: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tcustomColor: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsave( { attributes } ) {\n\t\tconst { color, customColor } = attributes;\n\n\t\t// the hr support changing color using border-color, since border-color\n\t\t// is not yet supported in the color palette, we use background-color\n\t\tconst backgroundClass = getColorClassName( 'background-color', color );\n\t\t// the dots styles uses text for the dots, to change those dots color is\n\t\t// using color, not backgroundColor\n\t\tconst colorClass = getColorClassName( 'color', color );\n\n\t\tconst className = classnames( {\n\t\t\t'has-text-color has-background': color || customColor,\n\t\t\t[ backgroundClass ]: backgroundClass,\n\t\t\t[ colorClass ]: colorClass,\n\t\t} );\n\n\t\tconst style = {\n\t\t\tbackgroundColor: backgroundClass ? undefined : customColor,\n\t\t\tcolor: colorClass ? undefined : customColor,\n\t\t};\n\n\t\treturn <hr { ...useBlockProps.save( { className, style } ) } />;\n\t},\n\tmigrate( attributes ) {\n\t\tconst { color, customColor, ...restAttributes } = attributes;\n\t\treturn {\n\t\t\t...restAttributes,\n\t\t\tbackgroundColor: color ? color : undefined,\n\t\t\topacity: 'css',\n\t\t\tstyle: customColor\n\t\t\t\t? { color: { background: customColor } }\n\t\t\t\t: undefined,\n\t\t};\n\t},\n};\n\nexport default [ v1 ];\n","/**\n * WordPress dependencies\n */\nimport { separator 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';\nimport deprecated from './deprecated';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tcustomColor: '#065174',\n\t\t\tclassName: 'is-style-wide',\n\t\t},\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { HorizontalRule } from '@wordpress/components';\nimport {\n\tuseBlockProps,\n\tgetColorClassName,\n\t__experimentalUseColorProps as useColorProps,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport useDeprecatedOpacity from './use-deprecated-opacity';\n\nexport default function SeparatorEdit( { attributes, setAttributes } ) {\n\tconst { backgroundColor, opacity, style } = attributes;\n\tconst colorProps = useColorProps( attributes );\n\tconst currentColor = colorProps?.style?.backgroundColor;\n\tconst hasCustomColor = !! style?.color?.background;\n\n\tuseDeprecatedOpacity( opacity, currentColor, setAttributes );\n\n\t// The dots styles uses text for the dots, to change those dots color is\n\t// using color, not backgroundColor.\n\tconst colorClass = getColorClassName( 'color', backgroundColor );\n\n\tconst className = classnames(\n\t\t{\n\t\t\t'has-text-color': backgroundColor || currentColor,\n\t\t\t[ colorClass ]: colorClass,\n\t\t\t'has-css-opacity': opacity === 'css',\n\t\t\t'has-alpha-channel-opacity': opacity === 'alpha-channel',\n\t\t},\n\t\tcolorProps.className\n\t);\n\n\tconst styles = {\n\t\tcolor: currentColor,\n\t\tbackgroundColor: currentColor,\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<HorizontalRule\n\t\t\t\t{ ...useBlockProps( {\n\t\t\t\t\tclassName,\n\t\t\t\t\tstyle: hasCustomColor ? styles : undefined,\n\t\t\t\t} ) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\n\nexport default function useDeprecatedOpacity(\n\topacity,\n\tcurrentColor,\n\tsetAttributes\n) {\n\tconst [ deprecatedOpacityWithNoColor, setDeprecatedOpacityWithNoColor ] =\n\t\tuseState( false );\n\tconst previousColor = usePrevious( currentColor );\n\n\t// A separator with no color set will always have previousColor set to undefined,\n\t// and we need to differentiate these from those with color set that will return\n\t// previousColor as undefined on the first render.\n\tuseEffect( () => {\n\t\tif ( opacity === 'css' && ! currentColor && ! previousColor ) {\n\t\t\tsetDeprecatedOpacityWithNoColor( true );\n\t\t}\n\t}, [ currentColor, previousColor, opacity ] );\n\n\t// For deprecated blocks, that have a default 0.4 css opacity set, we\n\t// need to remove this if the current color is changed, or a color is added.\n\t// In these instances the opacity attribute is set back to the default of\n\t// alpha-channel which allows a new custom opacity to be set via the color picker.\n\tuseEffect( () => {\n\t\tif (\n\t\t\topacity === 'css' &&\n\t\t\t( ( deprecatedOpacityWithNoColor && currentColor ) ||\n\t\t\t\t( previousColor && currentColor !== previousColor ) )\n\t\t) {\n\t\t\tsetAttributes( { opacity: 'alpha-channel' } );\n\t\t\tsetDeprecatedOpacityWithNoColor( false );\n\t\t}\n\t}, [ deprecatedOpacityWithNoColor, currentColor, previousColor ] );\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetColorClassName,\n\tuseBlockProps,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n} from '@wordpress/block-editor';\n\nexport default function separatorSave( { attributes } ) {\n\tconst { backgroundColor, style, opacity } = attributes;\n\tconst customColor = style?.color?.background;\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\t// The hr support changing color using border-color, since border-color\n\t// is not yet supported in the color palette, we use background-color.\n\n\t// The dots styles uses text for the dots, to change those dots color is\n\t// using color, not backgroundColor.\n\tconst colorClass = getColorClassName( 'color', backgroundColor );\n\n\tconst className = classnames(\n\t\t{\n\t\t\t'has-text-color': backgroundColor || customColor,\n\t\t\t[ colorClass ]: colorClass,\n\t\t\t'has-css-opacity': opacity === 'css',\n\t\t\t'has-alpha-channel-opacity': opacity === 'alpha-channel',\n\t\t},\n\t\tcolorProps.className\n\t);\n\n\tconst styles = {\n\t\tbackgroundColor: colorProps?.style?.backgroundColor,\n\t\tcolor: colorClass ? undefined : customColor,\n\t};\n\treturn <hr { ...useBlockProps.save( { className, style: styles } ) } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst shortcode = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M16 4.2v1.5h2.5v12.5H16v1.5h4V4.2h-4zM4.2 19.8h4v-1.5H5.8V5.8h2.5V4.2h-4l-.1 15.6zm5.1-3.1l1.4.6 4-10-1.4-.6-4 10z\" />\n\t</SVG>\n);\n\nexport default shortcode;\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"autop\"];","/**\n * WordPress dependencies\n */\nimport { removep, autop } from '@wordpress/autop';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'shortcode',\n\t\t\t// Per \"Shortcode names should be all lowercase and use all\n\t\t\t// letters, but numbers and underscores should work fine too.\n\t\t\t// Be wary of using hyphens (dashes), you'll be better off not\n\t\t\t// using them.\" in https://codex.wordpress.org/Shortcode_API\n\t\t\t// Require that the first character be a letter. This notably\n\t\t\t// prevents footnote markings ([1]) from being caught as\n\t\t\t// shortcodes.\n\t\t\ttag: '[a-z][a-z0-9_-]*',\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( attrs, { content } ) => {\n\t\t\t\t\t\treturn removep( autop( content ) );\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tpriority: 20,\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { shortcode as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport save from './save';\nimport transforms from './transforms';\nimport metadata from './block.json';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\ttransforms,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { PlainText, useBlockProps } from '@wordpress/block-editor';\nimport { useInstanceId } from '@wordpress/compose';\nimport { Icon, shortcode } from '@wordpress/icons';\n\nexport default function ShortcodeEdit( { attributes, setAttributes } ) {\n\tconst instanceId = useInstanceId( ShortcodeEdit );\n\tconst inputId = `blocks-shortcode-input-${ instanceId }`;\n\n\treturn (\n\t\t<div { ...useBlockProps( { className: 'components-placeholder' } ) }>\n\t\t\t<label\n\t\t\t\thtmlFor={ inputId }\n\t\t\t\tclassName=\"components-placeholder__label\"\n\t\t\t>\n\t\t\t\t<Icon icon={ shortcode } />\n\t\t\t\t{ __( 'Shortcode' ) }\n\t\t\t</label>\n\t\t\t<PlainText\n\t\t\t\tclassName=\"blocks-shortcode__textarea\"\n\t\t\t\tid={ inputId }\n\t\t\t\tvalue={ attributes.text }\n\t\t\t\taria-label={ __( 'Shortcode text' ) }\n\t\t\t\tplaceholder={ __( 'Write shortcode here…' ) }\n\t\t\t\tonChange={ ( text ) => setAttributes( { text } ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { RawHTML } from '@wordpress/element';\n\nexport default function save( { attributes } ) {\n\treturn <RawHTML>{ attributes.text }</RawHTML>;\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst siteLogo = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M12 3c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 1.5c4.1 0 7.5 3.4 7.5 7.5v.1c-1.4-.8-3.3-1.7-3.4-1.8-.2-.1-.5-.1-.8.1l-2.9 2.1L9 11.3c-.2-.1-.4 0-.6.1l-3.7 2.2c-.1-.5-.2-1-.2-1.5 0-4.2 3.4-7.6 7.5-7.6zm0 15c-3.1 0-5.7-1.9-6.9-4.5l3.7-2.2 3.5 1.2c.2.1.5 0 .7-.1l2.9-2.1c.8.4 2.5 1.2 3.5 1.9-.9 3.3-3.9 5.8-7.4 5.8z\" />\n\t</SVG>\n);\n\nexport default siteLogo;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { includes, pick } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { isBlobURL } from '@wordpress/blob';\nimport {\n\tcreateInterpolateElement,\n\tuseEffect,\n\tuseState,\n\tuseRef,\n} from '@wordpress/element';\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tMenuItem,\n\tPanelBody,\n\tRangeControl,\n\tResizableBox,\n\tSpinner,\n\tToggleControl,\n\tToolbarButton,\n\tPlaceholder,\n\tButton,\n} from '@wordpress/components';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalImageEditor as ImageEditor,\n\t__experimentalImageEditingProvider as ImageEditingProvider,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { crop, upload } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport useClientWidth from '../image/use-client-width';\n\n/**\n * Module constants\n */\nimport { MIN_SIZE } from '../image/constants';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst ACCEPT_MEDIA_STRING = 'image/*';\n\nconst SiteLogo = ( {\n\talt,\n\tattributes: { align, width, height, isLink, linkTarget, shouldSyncIcon },\n\tcontainerRef,\n\tisSelected,\n\tsetAttributes,\n\tsetLogo,\n\tlogoUrl,\n\tsiteUrl,\n\tlogoId,\n\ticonId,\n\tsetIcon,\n\tcanUserEdit,\n} ) => {\n\tconst clientWidth = useClientWidth( containerRef, [ align ] );\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isWideAligned = includes( [ 'wide', 'full' ], align );\n\tconst isResizable = ! isWideAligned && isLargeViewport;\n\tconst [ { naturalWidth, naturalHeight }, setNaturalSize ] = useState( {} );\n\tconst [ isEditingImage, setIsEditingImage ] = useState( false );\n\tconst { toggleSelection } = useDispatch( blockEditorStore );\n\tconst classes = classnames( 'custom-logo-link', {\n\t\t'is-transient': isBlobURL( logoUrl ),\n\t} );\n\tconst { imageEditing, maxWidth, title } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst siteEntities = select( coreStore ).getEditedEntityRecord(\n\t\t\t'root',\n\t\t\t'site'\n\t\t);\n\t\treturn {\n\t\t\ttitle: siteEntities.title,\n\t\t\t...pick( getSettings(), [ 'imageEditing', 'maxWidth' ] ),\n\t\t};\n\t}, [] );\n\n\tuseEffect( () => {\n\t\t// Turn the `Use as site icon` toggle off if it is on but the logo and icon have\n\t\t// fallen out of sync. This can happen if the toggle is saved in the `on` position,\n\t\t// but changes are later made to the site icon in the Customizer.\n\t\tif ( shouldSyncIcon && logoId !== iconId ) {\n\t\t\tsetAttributes( { shouldSyncIcon: false } );\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsEditingImage( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\tfunction onResizeStart() {\n\t\ttoggleSelection( false );\n\t}\n\n\tfunction onResizeStop() {\n\t\ttoggleSelection( true );\n\t}\n\n\tconst img = (\n\t\t<img\n\t\t\tclassName=\"custom-logo\"\n\t\t\tsrc={ logoUrl }\n\t\t\talt={ alt }\n\t\t\tonLoad={ ( event ) => {\n\t\t\t\tsetNaturalSize(\n\t\t\t\t\tpick( event.target, [ 'naturalWidth', 'naturalHeight' ] )\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n\n\tlet imgWrapper = img;\n\n\t// Disable reason: Image itself is not meant to be interactive, but\n\t// should direct focus to block.\n\tif ( isLink ) {\n\t\timgWrapper = (\n\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t<a\n\t\t\t\thref={ siteUrl }\n\t\t\t\tclassName={ classes }\n\t\t\t\trel=\"home\"\n\t\t\t\ttitle={ title }\n\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t>\n\t\t\t\t{ img }\n\t\t\t</a>\n\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t);\n\t}\n\n\tlet imageWidthWithinContainer;\n\n\tif ( clientWidth && naturalWidth && naturalHeight ) {\n\t\tconst exceedMaxWidth = naturalWidth > clientWidth;\n\t\timageWidthWithinContainer = exceedMaxWidth ? clientWidth : naturalWidth;\n\t}\n\n\tif ( ! isResizable || ! imageWidthWithinContainer ) {\n\t\treturn <div style={ { width, height } }>{ imgWrapper }</div>;\n\t}\n\n\t// Set the default width to a responsible size.\n\t// Note that this width is also set in the attached frontend CSS file.\n\tconst defaultWidth = 120;\n\n\tconst currentWidth = width || defaultWidth;\n\tconst ratio = naturalWidth / naturalHeight;\n\tconst currentHeight = currentWidth / ratio;\n\tconst minWidth =\n\t\tnaturalWidth < naturalHeight ? MIN_SIZE : Math.ceil( MIN_SIZE * ratio );\n\tconst minHeight =\n\t\tnaturalHeight < naturalWidth ? MIN_SIZE : Math.ceil( MIN_SIZE / ratio );\n\n\t// With the current implementation of ResizableBox, an image needs an\n\t// explicit pixel value for the max-width. In absence of being able to\n\t// set the content-width, this max-width is currently dictated by the\n\t// vanilla editor style. The following variable adds a buffer to this\n\t// vanilla style, so 3rd party themes have some wiggleroom. This does,\n\t// in most cases, allow you to scale the image beyond the width of the\n\t// main column, though not infinitely.\n\t// @todo It would be good to revisit this once a content-width variable\n\t// becomes available.\n\tconst maxWidthBuffer = maxWidth * 2.5;\n\n\tlet showRightHandle = false;\n\tlet showLeftHandle = false;\n\n\t/* eslint-disable no-lonely-if */\n\t// See https://github.com/WordPress/gutenberg/issues/7584.\n\tif ( align === 'center' ) {\n\t\t// When the image is centered, show both handles.\n\t\tshowRightHandle = true;\n\t\tshowLeftHandle = true;\n\t} else if ( isRTL() ) {\n\t\t// In RTL mode the image is on the right by default.\n\t\t// Show the right handle and hide the left handle only when it is\n\t\t// aligned left. Otherwise always show the left handle.\n\t\tif ( align === 'left' ) {\n\t\t\tshowRightHandle = true;\n\t\t} else {\n\t\t\tshowLeftHandle = true;\n\t\t}\n\t} else {\n\t\t// Show the left handle and hide the right handle only when the\n\t\t// image is aligned right. Otherwise always show the right handle.\n\t\tif ( align === 'right' ) {\n\t\t\tshowLeftHandle = true;\n\t\t} else {\n\t\t\tshowRightHandle = true;\n\t\t}\n\t}\n\t/* eslint-enable no-lonely-if */\n\n\tconst canEditImage =\n\t\tlogoId && naturalWidth && naturalHeight && imageEditing;\n\n\tconst imgEdit =\n\t\tcanEditImage && isEditingImage ? (\n\t\t\t<ImageEditingProvider\n\t\t\t\tid={ logoId }\n\t\t\t\turl={ logoUrl }\n\t\t\t\tnaturalWidth={ naturalWidth }\n\t\t\t\tnaturalHeight={ naturalHeight }\n\t\t\t\tclientWidth={ clientWidth }\n\t\t\t\tonSaveImage={ ( imageAttributes ) => {\n\t\t\t\t\tsetLogo( imageAttributes.id );\n\t\t\t\t} }\n\t\t\t\tisEditing={ isEditingImage }\n\t\t\t\tonFinishEditing={ () => setIsEditingImage( false ) }\n\t\t\t>\n\t\t\t\t<ImageEditor\n\t\t\t\t\turl={ logoUrl }\n\t\t\t\t\twidth={ currentWidth }\n\t\t\t\t\theight={ currentHeight }\n\t\t\t\t\tclientWidth={ clientWidth }\n\t\t\t\t\tnaturalHeight={ naturalHeight }\n\t\t\t\t\tnaturalWidth={ naturalWidth }\n\t\t\t\t/>\n\t\t\t</ImageEditingProvider>\n\t\t) : (\n\t\t\t<ResizableBox\n\t\t\t\tsize={ {\n\t\t\t\t\twidth: currentWidth,\n\t\t\t\t\theight: currentHeight,\n\t\t\t\t} }\n\t\t\t\tshowHandle={ isSelected }\n\t\t\t\tminWidth={ minWidth }\n\t\t\t\tmaxWidth={ maxWidthBuffer }\n\t\t\t\tminHeight={ minHeight }\n\t\t\t\tmaxHeight={ maxWidthBuffer / ratio }\n\t\t\t\tlockAspectRatio\n\t\t\t\tenable={ {\n\t\t\t\t\ttop: false,\n\t\t\t\t\tright: showRightHandle,\n\t\t\t\t\tbottom: true,\n\t\t\t\t\tleft: showLeftHandle,\n\t\t\t\t} }\n\t\t\t\tonResizeStart={ onResizeStart }\n\t\t\t\tonResizeStop={ ( event, direction, elt, delta ) => {\n\t\t\t\t\tonResizeStop();\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\twidth: parseInt( currentWidth + delta.width, 10 ),\n\t\t\t\t\t\theight: parseInt( currentHeight + delta.height, 10 ),\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ imgWrapper }\n\t\t\t</ResizableBox>\n\t\t);\n\n\tconst syncSiteIconHelpText = createInterpolateElement(\n\t\t__(\n\t\t\t'Site Icons are what you see in browser tabs, bookmark bars, and within the WordPress mobile apps. To use a custom icon that is different from your site logo, use the <a>Site Icon settings</a>.'\n\t\t),\n\t\t{\n\t\t\ta: (\n\t\t\t\t// eslint-disable-next-line jsx-a11y/anchor-has-content\n\t\t\t\t<a\n\t\t\t\t\thref={\n\t\t\t\t\t\tsiteUrl +\n\t\t\t\t\t\t'/wp-admin/customize.php?autofocus[section]=title_tagline'\n\t\t\t\t\t}\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t/>\n\t\t\t),\n\t\t}\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tlabel={ __( 'Image width' ) }\n\t\t\t\t\t\tonChange={ ( newWidth ) =>\n\t\t\t\t\t\t\tsetAttributes( { width: newWidth } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ minWidth }\n\t\t\t\t\t\tmax={ maxWidthBuffer }\n\t\t\t\t\t\tinitialPosition={ Math.min(\n\t\t\t\t\t\t\tdefaultWidth,\n\t\t\t\t\t\t\tmaxWidthBuffer\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tvalue={ width || '' }\n\t\t\t\t\t\tdisabled={ ! isResizable }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Link image to home' ) }\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\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</>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canUserEdit && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Use as site icon' ) }\n\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\tsetAttributes( { shouldSyncIcon: value } );\n\t\t\t\t\t\t\t\t\tsetIcon( value ? logoId : undefined );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tchecked={ !! shouldSyncIcon }\n\t\t\t\t\t\t\t\thelp={ syncSiteIconHelpText }\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\t<BlockControls group=\"block\">\n\t\t\t\t{ canEditImage && ! isEditingImage && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ () => setIsEditingImage( true ) }\n\t\t\t\t\t\ticon={ crop }\n\t\t\t\t\t\tlabel={ __( 'Crop' ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t{ imgEdit }\n\t\t</>\n\t);\n};\n\nexport default function LogoEdit( {\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tisSelected,\n} ) {\n\tconst { width, shouldSyncIcon } = attributes;\n\tconst ref = useRef();\n\n\tconst {\n\t\tsiteLogoId,\n\t\tcanUserEdit,\n\t\turl,\n\t\tsiteIconId,\n\t\tmediaItemData,\n\t\tisRequestingMediaItem,\n\t} = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord, getEditedEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst siteSettings = getEditedEntityRecord( 'root', 'site' );\n\t\tconst siteData = getEntityRecord( 'root', '__unstableBase' );\n\t\tconst _siteLogo = siteSettings?.site_logo;\n\t\tconst _readOnlyLogo = siteData?.site_logo;\n\t\tconst _canUserEdit = canUser( 'update', 'settings' );\n\t\tconst _siteLogoId = _canUserEdit ? _siteLogo : _readOnlyLogo;\n\t\tconst _siteIconId = siteSettings?.site_icon;\n\t\tconst mediaItem =\n\t\t\t_siteLogoId &&\n\t\t\tselect( coreStore ).getMedia( _siteLogoId, {\n\t\t\t\tcontext: 'view',\n\t\t\t} );\n\t\tconst _isRequestingMediaItem =\n\t\t\t_siteLogoId &&\n\t\t\t! select( coreStore ).hasFinishedResolution( 'getMedia', [\n\t\t\t\t_siteLogoId,\n\t\t\t\t{ context: 'view' },\n\t\t\t] );\n\n\t\treturn {\n\t\t\tsiteLogoId: _siteLogoId,\n\t\t\tcanUserEdit: _canUserEdit,\n\t\t\turl: siteData?.url,\n\t\t\tmediaItemData: mediaItem,\n\t\t\tisRequestingMediaItem: _isRequestingMediaItem,\n\t\t\tsiteIconId: _siteIconId,\n\t\t};\n\t}, [] );\n\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tconst setLogo = ( newValue, shouldForceSync = false ) => {\n\t\t// `shouldForceSync` is used to force syncing when the attribute\n\t\t// may not have updated yet.\n\t\tif ( shouldSyncIcon || shouldForceSync ) {\n\t\t\tsetIcon( newValue );\n\t\t}\n\n\t\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\tsite_logo: newValue,\n\t\t} );\n\t};\n\n\tconst setIcon = ( newValue ) =>\n\t\t// The new value needs to be `null` to reset the Site Icon.\n\t\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\tsite_icon: newValue ?? null,\n\t\t} );\n\n\tconst { alt_text: alt, source_url: logoUrl } = mediaItemData ?? {};\n\n\tconst onInitialSelectLogo = ( media ) => {\n\t\t// Initialize the syncSiteIcon toggle. If we currently have no Site logo and no\n\t\t// site icon, automatically sync the logo to the icon.\n\t\tif ( shouldSyncIcon === undefined ) {\n\t\t\tconst shouldForceSync = ! siteIconId;\n\t\t\tsetAttributes( { shouldSyncIcon: shouldForceSync } );\n\n\t\t\t// Because we cannot rely on the `shouldSyncIcon` attribute to have updated by\n\t\t\t// the time `setLogo` is called, pass an argument to force the syncing.\n\t\t\tonSelectLogo( media, shouldForceSync );\n\t\t\treturn;\n\t\t}\n\n\t\tonSelectLogo( media );\n\t};\n\n\tconst onSelectLogo = ( media, shouldForceSync = false ) => {\n\t\tif ( ! media ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! media.id && media.url ) {\n\t\t\t// This is a temporary blob image.\n\t\t\tsetLogo( undefined );\n\t\t\treturn;\n\t\t}\n\n\t\tsetLogo( media.id, shouldForceSync );\n\t};\n\n\tconst onRemoveLogo = () => {\n\t\tsetLogo( null );\n\t\tsetAttributes( { width: undefined } );\n\t};\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t};\n\n\tconst controls = canUserEdit && logoUrl && (\n\t\t<BlockControls group=\"other\">\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaURL={ logoUrl }\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\taccept={ ACCEPT_MEDIA_STRING }\n\t\t\t\tonSelect={ onSelectLogo }\n\t\t\t\tonError={ onUploadError }\n\t\t\t>\n\t\t\t\t<MenuItem onClick={ onRemoveLogo }>{ __( 'Reset' ) }</MenuItem>\n\t\t\t</MediaReplaceFlow>\n\t\t</BlockControls>\n\t);\n\n\tlet logoImage;\n\tconst isLoading = siteLogoId === undefined || isRequestingMediaItem;\n\tif ( isLoading ) {\n\t\tlogoImage = <Spinner />;\n\t}\n\tif ( !! logoUrl ) {\n\t\tlogoImage = (\n\t\t\t<SiteLogo\n\t\t\t\talt={ alt }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tclassName={ className }\n\t\t\t\tcontainerRef={ ref }\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tlogoUrl={ logoUrl }\n\t\t\t\tsetLogo={ setLogo }\n\t\t\t\tlogoId={ mediaItemData?.id || siteLogoId }\n\t\t\t\tsiteUrl={ url }\n\t\t\t\tsetIcon={ setIcon }\n\t\t\t\ticonId={ siteIconId }\n\t\t\t\tcanUserEdit={ canUserEdit }\n\t\t\t/>\n\t\t);\n\t}\n\tconst placeholder = ( content ) => {\n\t\tconst placeholderClassName = classnames(\n\t\t\t'block-editor-media-placeholder',\n\t\t\tclassName\n\t\t);\n\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ placeholderClassName }\n\t\t\t\tpreview={ logoImage }\n\t\t\t\twithIllustration={ true }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\tconst classes = classnames( className, {\n\t\t'is-default-size': ! width,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\tconst label = __( 'Add a site logo' );\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ controls }\n\t\t\t{ !! logoUrl && logoImage }\n\t\t\t{ ! logoUrl && ! canUserEdit && (\n\t\t\t\t<Placeholder className=\"site-logo_placeholder\">\n\t\t\t\t\t{ !! isLoading && (\n\t\t\t\t\t\t<span className=\"components-placeholder__preview\">\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t) }\n\t\t\t\t</Placeholder>\n\t\t\t) }\n\t\t\t{ ! logoUrl && canUserEdit && (\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\tonSelect={ onInitialSelectLogo }\n\t\t\t\t\taccept={ ACCEPT_MEDIA_STRING }\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tmediaLibraryButton={ ( { open } ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\t\ttooltipPosition=\"top center\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\topen();\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/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/site-title' ],\n\t\t\ttransform: ( { isLink, linkTarget } ) => {\n\t\t\t\treturn createBlock( 'core/site-title', {\n\t\t\t\t\tisLink,\n\t\t\t\t\tlinkTarget,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { siteLogo 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 transforms from './transforms';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\ttransforms,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/components';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\">\n\t\t<Path fill=\"none\" d=\"M0 0h24v24H0z\" />\n\t\t<Path d=\"M4 9h16v2H4V9zm0 4h10v2H4v-2z\" />\n\t</SVG>\n);\n","/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\n\nconst v1 = {\n\tattributes: {\n\t\ttextAlign: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: [ 'wide', 'full' ],\n\t\thtml: false,\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t},\n\t\tspacing: {\n\t\t\tmargin: true,\n\t\t\tpadding: true,\n\t\t},\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalLetterSpacing: true,\n\t\t},\n\t},\n\tsave() {\n\t\treturn null;\n\t},\n\tmigrate: migrateFontFamily,\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v1 ];\n","/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport icon from './icon';\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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport {\n\tAlignmentControl,\n\tuseBlockProps,\n\tBlockControls,\n\tRichText,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\n\nexport default function SiteTaglineEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst { textAlign } = attributes;\n\tconst [ siteTagline, setSiteTagline ] = useEntityProp(\n\t\t'root',\n\t\t'site',\n\t\t'description'\n\t);\n\tconst { canUserEdit, readOnlySiteTagLine } = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord } = select( coreStore );\n\t\tconst siteData = getEntityRecord( 'root', '__unstableBase' );\n\t\treturn {\n\t\t\tcanUserEdit: canUser( 'update', 'settings' ),\n\t\t\treadOnlySiteTagLine: siteData?.description,\n\t\t};\n\t}, [] );\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t'wp-block-site-tagline__placeholder':\n\t\t\t\t! canUserEdit && ! readOnlySiteTagLine,\n\t\t} ),\n\t} );\n\tconst siteTaglineContent = canUserEdit ? (\n\t\t<RichText\n\t\t\tallowedFormats={ [] }\n\t\t\tonChange={ setSiteTagline }\n\t\t\taria-label={ __( 'Site tagline text' ) }\n\t\t\tplaceholder={ __( 'Write site tagline…' ) }\n\t\t\ttagName=\"p\"\n\t\t\tvalue={ siteTagline }\n\t\t\tdisableLineBreaks\n\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t}\n\t\t\t{ ...blockProps }\n\t\t/>\n\t) : (\n\t\t<p { ...blockProps }>\n\t\t\t{ readOnlySiteTagLine || __( 'Site Tagline placeholder' ) }\n\t\t</p>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tonChange={ ( newAlign ) =>\n\t\t\t\t\t\tsetAttributes( { textAlign: newAlign } )\n\t\t\t\t\t}\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ siteTaglineContent }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst mapMarker = (\n\t<SVG xmlns=\"https://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M12 9c-.8 0-1.5.7-1.5 1.5S11.2 12 12 12s1.5-.7 1.5-1.5S12.8 9 12 9zm0-5c-3.6 0-6.5 2.8-6.5 6.2 0 .8.3 1.8.9 3.1.5 1.1 1.2 2.3 2 3.6.7 1 3 3.8 3.2 3.9l.4.5.4-.5c.2-.2 2.6-2.9 3.2-3.9.8-1.2 1.5-2.5 2-3.6.6-1.3.9-2.3.9-3.1C18.5 6.8 15.6 4 12 4zm4.3 8.7c-.5 1-1.1 2.2-1.9 3.4-.5.7-1.7 2.2-2.4 3-.7-.8-1.9-2.3-2.4-3-.8-1.2-1.4-2.3-1.9-3.3-.6-1.4-.7-2.2-.7-2.5 0-2.6 2.2-4.7 5-4.7s5 2.1 5 4.7c0 .2-.1 1-.7 2.4z\" />\n\t</SVG>\n);\n\nexport default mapMarker;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/components';\nimport { paragraph } from '@wordpress/icons';\n\nexport default function LevelIcon( { level, isPressed = false } ) {\n\tif ( level === 0 ) return paragraph;\n\tconst levelToPath = {\n\t\t1: 'M9 5h2v10H9v-4H5v4H3V5h2v4h4V5zm6.6 0c-.6.9-1.5 1.7-2.6 2v1h2v7h2V5h-1.4z',\n\t\t2: 'M7 5h2v10H7v-4H3v4H1V5h2v4h4V5zm8 8c.5-.4.6-.6 1.1-1.1.4-.4.8-.8 1.2-1.3.3-.4.6-.8.9-1.3.2-.4.3-.8.3-1.3 0-.4-.1-.9-.3-1.3-.2-.4-.4-.7-.8-1-.3-.3-.7-.5-1.2-.6-.5-.2-1-.2-1.5-.2-.4 0-.7 0-1.1.1-.3.1-.7.2-1 .3-.3.1-.6.3-.9.5-.3.2-.6.4-.8.7l1.2 1.2c.3-.3.6-.5 1-.7.4-.2.7-.3 1.2-.3s.9.1 1.3.4c.3.3.5.7.5 1.1 0 .4-.1.8-.4 1.1-.3.5-.6.9-1 1.2-.4.4-1 .9-1.6 1.4-.6.5-1.4 1.1-2.2 1.6V15h8v-2H15z',\n\t\t3: 'M12.1 12.2c.4.3.8.5 1.2.7.4.2.9.3 1.4.3.5 0 1-.1 1.4-.3.3-.1.5-.5.5-.8 0-.2 0-.4-.1-.6-.1-.2-.3-.3-.5-.4-.3-.1-.7-.2-1-.3-.5-.1-1-.1-1.5-.1V9.1c.7.1 1.5-.1 2.2-.4.4-.2.6-.5.6-.9 0-.3-.1-.6-.4-.8-.3-.2-.7-.3-1.1-.3-.4 0-.8.1-1.1.3-.4.2-.7.4-1.1.6l-1.2-1.4c.5-.4 1.1-.7 1.6-.9.5-.2 1.2-.3 1.8-.3.5 0 1 .1 1.6.2.4.1.8.3 1.2.5.3.2.6.5.8.8.2.3.3.7.3 1.1 0 .5-.2.9-.5 1.3-.4.4-.9.7-1.5.9v.1c.6.1 1.2.4 1.6.8.4.4.7.9.7 1.5 0 .4-.1.8-.3 1.2-.2.4-.5.7-.9.9-.4.3-.9.4-1.3.5-.5.1-1 .2-1.6.2-.8 0-1.6-.1-2.3-.4-.6-.2-1.1-.6-1.6-1l1.1-1.4zM7 9H3V5H1v10h2v-4h4v4h2V5H7v4z',\n\t\t4: 'M9 15H7v-4H3v4H1V5h2v4h4V5h2v10zm10-2h-1v2h-2v-2h-5v-2l4-6h3v6h1v2zm-3-2V7l-2.8 4H16z',\n\t\t5: 'M12.1 12.2c.4.3.7.5 1.1.7.4.2.9.3 1.3.3.5 0 1-.1 1.4-.4.4-.3.6-.7.6-1.1 0-.4-.2-.9-.6-1.1-.4-.3-.9-.4-1.4-.4H14c-.1 0-.3 0-.4.1l-.4.1-.5.2-1-.6.3-5h6.4v1.9h-4.3L14 8.8c.2-.1.5-.1.7-.2.2 0 .5-.1.7-.1.5 0 .9.1 1.4.2.4.1.8.3 1.1.6.3.2.6.6.8.9.2.4.3.9.3 1.4 0 .5-.1 1-.3 1.4-.2.4-.5.8-.9 1.1-.4.3-.8.5-1.3.7-.5.2-1 .3-1.5.3-.8 0-1.6-.1-2.3-.4-.6-.2-1.1-.6-1.6-1-.1-.1 1-1.5 1-1.5zM9 15H7v-4H3v4H1V5h2v4h4V5h2v10z',\n\t\t6: 'M9 15H7v-4H3v4H1V5h2v4h4V5h2v10zm8.6-7.5c-.2-.2-.5-.4-.8-.5-.6-.2-1.3-.2-1.9 0-.3.1-.6.3-.8.5l-.6.9c-.2.5-.2.9-.2 1.4.4-.3.8-.6 1.2-.8.4-.2.8-.3 1.3-.3.4 0 .8 0 1.2.2.4.1.7.3 1 .6.3.3.5.6.7.9.2.4.3.8.3 1.3s-.1.9-.3 1.4c-.2.4-.5.7-.8 1-.4.3-.8.5-1.2.6-1 .3-2 .3-3 0-.5-.2-1-.5-1.4-.9-.4-.4-.8-.9-1-1.5-.2-.6-.3-1.3-.3-2.1s.1-1.6.4-2.3c.2-.6.6-1.2 1-1.6.4-.4.9-.7 1.4-.9.6-.3 1.1-.4 1.7-.4.7 0 1.4.1 2 .3.5.2 1 .5 1.4.8 0 .1-1.3 1.4-1.3 1.4zm-2.4 5.8c.2 0 .4 0 .6-.1.2 0 .4-.1.5-.2.1-.1.3-.3.4-.5.1-.2.1-.5.1-.7 0-.4-.1-.8-.4-1.1-.3-.2-.7-.3-1.1-.3-.3 0-.7.1-1 .2-.4.2-.7.4-1 .7 0 .3.1.7.3 1 .1.2.3.4.4.6.2.1.3.3.5.3.2.1.5.2.7.1z',\n\t};\n\treturn (\n\t\t<SVG\n\t\t\twidth=\"20\"\n\t\t\theight=\"20\"\n\t\t\tviewBox=\"0 0 20 20\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tisPressed={ isPressed }\n\t\t>\n\t\t\t<Path d={ levelToPath[ level ] } />\n\t\t</SVG>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { ToolbarDropdownMenu } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport LevelIcon from './level-icon';\n\nexport default function LevelControl( { level, onChange } ) {\n\tconst allControls = [ 1, 2, 3, 4, 5, 6, 0 ].map( ( currentLevel ) => {\n\t\tconst isActive = currentLevel === level;\n\t\treturn {\n\t\t\ticon: <LevelIcon level={ currentLevel } isPressed={ isActive } />,\n\t\t\ttitle:\n\t\t\t\tcurrentLevel === 0\n\t\t\t\t\t? __( 'Paragraph' )\n\t\t\t\t\t: // translators: %s: heading level e.g: \"1\", \"2\", \"3\"\n\t\t\t\t\t  sprintf( __( 'Heading %d' ), currentLevel ),\n\t\t\tisActive,\n\t\t\tonClick: () => onChange( currentLevel ),\n\t\t\trole: 'menuitemradio',\n\t\t};\n\t} );\n\treturn (\n\t\t<ToolbarDropdownMenu\n\t\t\tlabel={ __( 'Change heading level' ) }\n\t\t\ticon={ <LevelIcon level={ level } /> }\n\t\t\tcontrols={ allControls }\n\t\t/>\n\t);\n}\n","/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\n\nconst v1 = {\n\tattributes: {\n\t\tlevel: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 1,\n\t\t},\n\t\ttextAlign: {\n\t\t\ttype: 'string',\n\t\t},\n\t\tisLink: {\n\t\t\ttype: 'boolean',\n\t\t\tdefault: true,\n\t\t},\n\t\tlinkTarget: {\n\t\t\ttype: 'string',\n\t\t\tdefault: '_self',\n\t\t},\n\t},\n\tsupports: {\n\t\talign: [ 'wide', 'full' ],\n\t\thtml: false,\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t\tlink: true,\n\t\t},\n\t\tspacing: {\n\t\t\tpadding: true,\n\t\t\tmargin: true,\n\t\t},\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\tlineHeight: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t\t__experimentalTextTransform: true,\n\t\t\t__experimentalFontStyle: true,\n\t\t\t__experimentalFontWeight: true,\n\t\t\t__experimentalLetterSpacing: true,\n\t\t},\n\t},\n\tsave() {\n\t\treturn null;\n\t},\n\tmigrate: migrateFontFamily,\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v1 ];\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/site-logo' ],\n\t\t\ttransform: ( { isLink, linkTarget } ) => {\n\t\t\t\treturn createBlock( 'core/site-logo', {\n\t\t\t\t\tisLink,\n\t\t\t\t\tlinkTarget,\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { mapMarker 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';\nimport transforms from './transforms';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\ttransforms,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tRichText,\n\tAlignmentControl,\n\tInspectorControls,\n\tBlockControls,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { ToggleControl, PanelBody } from '@wordpress/components';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport LevelControl from './level-toolbar';\n\nexport default function SiteTitleEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst { level, textAlign, isLink, linkTarget } = attributes;\n\tconst [ title, setTitle ] = useEntityProp( 'root', 'site', 'title' );\n\tconst { canUserEdit, readOnlyTitle } = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord } = select( coreStore );\n\t\tconst siteData = getEntityRecord( 'root', '__unstableBase' );\n\t\treturn {\n\t\t\tcanUserEdit: canUser( 'update', 'settings' ),\n\t\t\treadOnlyTitle: decodeEntities( siteData?.name ),\n\t\t};\n\t}, [] );\n\tconst TagName = level === 0 ? 'p' : `h${ level }`;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t'wp-block-site-title__placeholder':\n\t\t\t\t! canUserEdit && ! readOnlyTitle,\n\t\t} ),\n\t} );\n\tconst siteTitleContent = canUserEdit ? (\n\t\t<TagName { ...blockProps }>\n\t\t\t<RichText\n\t\t\t\ttagName={ isLink ? 'a' : 'span' }\n\t\t\t\thref={ isLink ? '#site-title-pseudo-link' : undefined }\n\t\t\t\taria-label={ __( 'Site title text' ) }\n\t\t\t\tplaceholder={ __( 'Write site title…' ) }\n\t\t\t\tvalue={ title }\n\t\t\t\tonChange={ setTitle }\n\t\t\t\tallowedFormats={ [] }\n\t\t\t\tdisableLineBreaks\n\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t\t}\n\t\t\t/>\n\t\t</TagName>\n\t) : (\n\t\t<TagName { ...blockProps }>\n\t\t\t{ isLink ? (\n\t\t\t\t<a\n\t\t\t\t\thref=\"#site-title-pseudo-link\"\n\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t>\n\t\t\t\t\t{ readOnlyTitle || __( 'Site Title placeholder' ) }\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\t<span>{ title || readOnlyTitle }</span>\n\t\t\t) }\n\t\t</TagName>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<LevelControl\n\t\t\t\t\tlevel={ level }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Make title link to home' ) }\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<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\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\t{ siteTitleContent }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst share = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M9 11.8l6.1-4.5c.1.4.4.7.9.7h2c.6 0 1-.4 1-1V5c0-.6-.4-1-1-1h-2c-.6 0-1 .4-1 1v.4l-6.4 4.8c-.2-.1-.4-.2-.6-.2H6c-.6 0-1 .4-1 1v2c0 .6.4 1 1 1h2c.2 0 .4-.1.6-.2l6.4 4.8v.4c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-2c0-.6-.4-1-1-1h-2c-.5 0-.8.3-.9.7L9 12.2v-.4z\" />\n\t</SVG>\n);\n\nexport default share;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst keyboardReturn = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t\t<Path d=\"M6.734 16.106l2.176-2.38-1.093-1.028-3.846 4.158 3.846 4.157 1.093-1.027-2.176-2.38h2.811c1.125 0 2.25.03 3.374 0 1.428-.001 3.362-.25 4.963-1.277 1.66-1.065 2.868-2.906 2.868-5.859 0-2.479-1.327-4.896-3.65-5.93-1.82-.813-3.044-.8-4.806-.788l-.567.002v1.5c.184 0 .368 0 .553-.002 1.82-.007 2.704-.014 4.21.657 1.854.827 2.76 2.657 2.76 4.561 0 2.472-.973 3.824-2.178 4.596-1.258.807-2.864 1.04-4.163 1.04h-.02c-1.115.03-2.229 0-3.344 0H6.734z\" />\n\t</SVG>\n);\n\nexport default keyboardReturn;\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const ChainIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M19.647,16.706a1.134,1.134,0,0,0-.343-.833l-2.549-2.549a1.134,1.134,0,0,0-.833-.343,1.168,1.168,0,0,0-.883.392l.233.226q.2.189.264.264a2.922,2.922,0,0,1,.184.233.986.986,0,0,1,.159.312,1.242,1.242,0,0,1,.043.337,1.172,1.172,0,0,1-1.176,1.176,1.237,1.237,0,0,1-.337-.043,1,1,0,0,1-.312-.159,2.76,2.76,0,0,1-.233-.184q-.073-.068-.264-.264l-.226-.233a1.19,1.19,0,0,0-.4.895,1.134,1.134,0,0,0,.343.833L15.837,19.3a1.13,1.13,0,0,0,.833.331,1.18,1.18,0,0,0,.833-.318l1.8-1.789a1.12,1.12,0,0,0,.343-.821Zm-8.615-8.64a1.134,1.134,0,0,0-.343-.833L8.163,4.7a1.134,1.134,0,0,0-.833-.343,1.184,1.184,0,0,0-.833.331L4.7,6.473a1.12,1.12,0,0,0-.343.821,1.134,1.134,0,0,0,.343.833l2.549,2.549a1.13,1.13,0,0,0,.833.331,1.184,1.184,0,0,0,.883-.38L8.728,10.4q-.2-.189-.264-.264A2.922,2.922,0,0,1,8.28,9.9a.986.986,0,0,1-.159-.312,1.242,1.242,0,0,1-.043-.337A1.172,1.172,0,0,1,9.254,8.079a1.237,1.237,0,0,1,.337.043,1,1,0,0,1,.312.159,2.761,2.761,0,0,1,.233.184q.073.068.264.264l.226.233a1.19,1.19,0,0,0,.4-.895ZM22,16.706a3.343,3.343,0,0,1-1.042,2.488l-1.8,1.789a3.536,3.536,0,0,1-4.988-.025l-2.525-2.537a3.384,3.384,0,0,1-1.017-2.488,3.448,3.448,0,0,1,1.078-2.561l-1.078-1.078a3.434,3.434,0,0,1-2.549,1.078,3.4,3.4,0,0,1-2.5-1.029L3.029,9.794A3.4,3.4,0,0,1,2,7.294,3.343,3.343,0,0,1,3.042,4.806l1.8-1.789A3.384,3.384,0,0,1,7.331,2a3.357,3.357,0,0,1,2.5,1.042l2.525,2.537a3.384,3.384,0,0,1,1.017,2.488,3.448,3.448,0,0,1-1.078,2.561l1.078,1.078a3.551,3.551,0,0,1,5.049-.049l2.549,2.549A3.4,3.4,0,0,1,22,16.706Z\" />\n\t</SVG>\n);\n","/**\n * Internal dependencies\n */\nimport {\n\tAmazonIcon,\n\tBandcampIcon,\n\tBehanceIcon,\n\tChainIcon,\n\tCodepenIcon,\n\tDeviantArtIcon,\n\tDribbbleIcon,\n\tDropboxIcon,\n\tEtsyIcon,\n\tFacebookIcon,\n\tFeedIcon,\n\tFivehundredpxIcon,\n\tFlickrIcon,\n\tFoursquareIcon,\n\tGoodreadsIcon,\n\tGoogleIcon,\n\tGitHubIcon,\n\tInstagramIcon,\n\tLastfmIcon,\n\tLinkedInIcon,\n\tMailIcon,\n\tMastodonIcon,\n\tMeetupIcon,\n\tMediumIcon,\n\tPatreonIcon,\n\tPinterestIcon,\n\tPocketIcon,\n\tRedditIcon,\n\tSkypeIcon,\n\tSnapchatIcon,\n\tSoundCloudIcon,\n\tSpotifyIcon,\n\tTelegramIcon,\n\tTiktokIcon,\n\tTumblrIcon,\n\tTwitchIcon,\n\tTwitterIcon,\n\tVimeoIcon,\n\tVkIcon,\n\tWhatsAppIcon,\n\tWordPressIcon,\n\tYelpIcon,\n\tYouTubeIcon,\n} from './icons';\n\nconst variations = [\n\t{\n\t\tisDefault: true,\n\t\tname: 'wordpress',\n\t\tattributes: { service: 'wordpress' },\n\t\ttitle: 'WordPress',\n\t\ticon: WordPressIcon,\n\t},\n\n\t{\n\t\tname: 'fivehundredpx',\n\t\tattributes: { service: 'fivehundredpx' },\n\t\ttitle: '500px',\n\t\ticon: FivehundredpxIcon,\n\t},\n\t{\n\t\tname: 'amazon',\n\t\tattributes: { service: 'amazon' },\n\t\ttitle: 'Amazon',\n\t\ticon: AmazonIcon,\n\t},\n\t{\n\t\tname: 'bandcamp',\n\t\tattributes: { service: 'bandcamp' },\n\t\ttitle: 'Bandcamp',\n\t\ticon: BandcampIcon,\n\t},\n\t{\n\t\tname: 'behance',\n\t\tattributes: { service: 'behance' },\n\t\ttitle: 'Behance',\n\t\ticon: BehanceIcon,\n\t},\n\t{\n\t\tname: 'chain',\n\t\tattributes: { service: 'chain' },\n\t\ttitle: 'Link',\n\t\ticon: ChainIcon,\n\t},\n\t{\n\t\tname: 'codepen',\n\t\tattributes: { service: 'codepen' },\n\t\ttitle: 'CodePen',\n\t\ticon: CodepenIcon,\n\t},\n\t{\n\t\tname: 'deviantart',\n\t\tattributes: { service: 'deviantart' },\n\t\ttitle: 'DeviantArt',\n\t\ticon: DeviantArtIcon,\n\t},\n\t{\n\t\tname: 'dribbble',\n\t\tattributes: { service: 'dribbble' },\n\t\ttitle: 'Dribbble',\n\t\ticon: DribbbleIcon,\n\t},\n\t{\n\t\tname: 'dropbox',\n\t\tattributes: { service: 'dropbox' },\n\t\ttitle: 'Dropbox',\n\t\ticon: DropboxIcon,\n\t},\n\t{\n\t\tname: 'etsy',\n\t\tattributes: { service: 'etsy' },\n\t\ttitle: 'Etsy',\n\t\ticon: EtsyIcon,\n\t},\n\t{\n\t\tname: 'facebook',\n\t\tattributes: { service: 'facebook' },\n\t\ttitle: 'Facebook',\n\t\ticon: FacebookIcon,\n\t},\n\t{\n\t\tname: 'feed',\n\t\tattributes: { service: 'feed' },\n\t\ttitle: 'RSS Feed',\n\t\ticon: FeedIcon,\n\t},\n\t{\n\t\tname: 'flickr',\n\t\tattributes: { service: 'flickr' },\n\t\ttitle: 'Flickr',\n\t\ticon: FlickrIcon,\n\t},\n\t{\n\t\tname: 'foursquare',\n\t\tattributes: { service: 'foursquare' },\n\t\ttitle: 'Foursquare',\n\t\ticon: FoursquareIcon,\n\t},\n\t{\n\t\tname: 'goodreads',\n\t\tattributes: { service: 'goodreads' },\n\t\ttitle: 'Goodreads',\n\t\ticon: GoodreadsIcon,\n\t},\n\t{\n\t\tname: 'google',\n\t\tattributes: { service: 'google' },\n\t\ttitle: 'Google',\n\t\ticon: GoogleIcon,\n\t},\n\t{\n\t\tname: 'github',\n\t\tattributes: { service: 'github' },\n\t\ttitle: 'GitHub',\n\t\ticon: GitHubIcon,\n\t},\n\t{\n\t\tname: 'instagram',\n\t\tattributes: { service: 'instagram' },\n\t\ttitle: 'Instagram',\n\t\ticon: InstagramIcon,\n\t},\n\t{\n\t\tname: 'lastfm',\n\t\tattributes: { service: 'lastfm' },\n\t\ttitle: 'Last.fm',\n\t\ticon: LastfmIcon,\n\t},\n\t{\n\t\tname: 'linkedin',\n\t\tattributes: { service: 'linkedin' },\n\t\ttitle: 'LinkedIn',\n\t\ticon: LinkedInIcon,\n\t},\n\t{\n\t\tname: 'mail',\n\t\tattributes: { service: 'mail' },\n\t\ttitle: 'Mail',\n\t\tkeywords: [ 'email', 'e-mail' ],\n\t\ticon: MailIcon,\n\t},\n\t{\n\t\tname: 'mastodon',\n\t\tattributes: { service: 'mastodon' },\n\t\ttitle: 'Mastodon',\n\t\ticon: MastodonIcon,\n\t},\n\t{\n\t\tname: 'meetup',\n\t\tattributes: { service: 'meetup' },\n\t\ttitle: 'Meetup',\n\t\ticon: MeetupIcon,\n\t},\n\t{\n\t\tname: 'medium',\n\t\tattributes: { service: 'medium' },\n\t\ttitle: 'Medium',\n\t\ticon: MediumIcon,\n\t},\n\t{\n\t\tname: 'patreon',\n\t\tattributes: { service: 'patreon' },\n\t\ttitle: 'Patreon',\n\t\ticon: PatreonIcon,\n\t},\n\t{\n\t\tname: 'pinterest',\n\t\tattributes: { service: 'pinterest' },\n\t\ttitle: 'Pinterest',\n\t\ticon: PinterestIcon,\n\t},\n\t{\n\t\tname: 'pocket',\n\t\tattributes: { service: 'pocket' },\n\t\ttitle: 'Pocket',\n\t\ticon: PocketIcon,\n\t},\n\t{\n\t\tname: 'reddit',\n\t\tattributes: { service: 'reddit' },\n\t\ttitle: 'Reddit',\n\t\ticon: RedditIcon,\n\t},\n\t{\n\t\tname: 'skype',\n\t\tattributes: { service: 'skype' },\n\t\ttitle: 'Skype',\n\t\ticon: SkypeIcon,\n\t},\n\t{\n\t\tname: 'snapchat',\n\t\tattributes: { service: 'snapchat' },\n\t\ttitle: 'Snapchat',\n\t\ticon: SnapchatIcon,\n\t},\n\t{\n\t\tname: 'soundcloud',\n\t\tattributes: { service: 'soundcloud' },\n\t\ttitle: 'SoundCloud',\n\t\ticon: SoundCloudIcon,\n\t},\n\t{\n\t\tname: 'spotify',\n\t\tattributes: { service: 'spotify' },\n\t\ttitle: 'Spotify',\n\t\ticon: SpotifyIcon,\n\t},\n\t{\n\t\tname: 'telegram',\n\t\tattributes: { service: 'telegram' },\n\t\ttitle: 'Telegram',\n\t\ticon: TelegramIcon,\n\t},\n\t{\n\t\tname: 'tiktok',\n\t\tattributes: { service: 'tiktok' },\n\t\ttitle: 'TikTok',\n\t\ticon: TiktokIcon,\n\t},\n\t{\n\t\tname: 'tumblr',\n\t\tattributes: { service: 'tumblr' },\n\t\ttitle: 'Tumblr',\n\t\ticon: TumblrIcon,\n\t},\n\t{\n\t\tname: 'twitch',\n\t\tattributes: { service: 'twitch' },\n\t\ttitle: 'Twitch',\n\t\ticon: TwitchIcon,\n\t},\n\t{\n\t\tname: 'twitter',\n\t\tattributes: { service: 'twitter' },\n\t\ttitle: 'Twitter',\n\t\ticon: TwitterIcon,\n\t},\n\t{\n\t\tname: 'vimeo',\n\t\tattributes: { service: 'vimeo' },\n\t\ttitle: 'Vimeo',\n\t\ticon: VimeoIcon,\n\t},\n\t{\n\t\tname: 'vk',\n\t\tattributes: { service: 'vk' },\n\t\ttitle: 'VK',\n\t\ticon: VkIcon,\n\t},\n\t{\n\t\tname: 'whatsapp',\n\t\tattributes: { service: 'whatsapp' },\n\t\ttitle: 'WhatsApp',\n\t\ticon: WhatsAppIcon,\n\t},\n\t{\n\t\tname: 'yelp',\n\t\tattributes: { service: 'yelp' },\n\t\ttitle: 'Yelp',\n\t\ticon: YelpIcon,\n\t},\n\t{\n\t\tname: 'youtube',\n\t\tattributes: { service: 'youtube' },\n\t\ttitle: 'YouTube',\n\t\ticon: YouTubeIcon,\n\t},\n];\n\n/**\n * Add `isActive` function to all `social link` variations, if not defined.\n * `isActive` function is used to find a variation match from a created\n *  Block by providing its attributes.\n */\nvariations.forEach( ( variation ) => {\n\tif ( variation.isActive ) return;\n\tvariation.isActive = ( blockAttributes, variationAttributes ) =>\n\t\tblockAttributes.service === variationAttributes.service;\n} );\n\nexport default variations;\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const WordPressIcon = () => (\n\t<SVG\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\tversion=\"1.1\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t>\n\t\t<Path d=\"M12.158,12.786L9.46,20.625c0.806,0.237,1.657,0.366,2.54,0.366c1.047,0,2.051-0.181,2.986-0.51 c-0.024-0.038-0.046-0.079-0.065-0.124L12.158,12.786z M3.009,12c0,3.559,2.068,6.634,5.067,8.092L3.788,8.341 C3.289,9.459,3.009,10.696,3.009,12z M18.069,11.546c0-1.112-0.399-1.881-0.741-2.48c-0.456-0.741-0.883-1.368-0.883-2.109 c0-0.826,0.627-1.596,1.51-1.596c0.04,0,0.078,0.005,0.116,0.007C16.472,3.904,14.34,3.009,12,3.009 c-3.141,0-5.904,1.612-7.512,4.052c0.211,0.007,0.41,0.011,0.579,0.011c0.94,0,2.396-0.114,2.396-0.114 C7.947,6.93,8.004,7.642,7.52,7.699c0,0-0.487,0.057-1.029,0.085l3.274,9.739l1.968-5.901l-1.401-3.838 C9.848,7.756,9.389,7.699,9.389,7.699C8.904,7.67,8.961,6.93,9.446,6.958c0,0,1.484,0.114,2.368,0.114 c0.94,0,2.397-0.114,2.397-0.114c0.485-0.028,0.542,0.684,0.057,0.741c0,0-0.488,0.057-1.029,0.085l3.249,9.665l0.897-2.996 C17.841,13.284,18.069,12.316,18.069,11.546z M19.889,7.686c0.039,0.286,0.06,0.593,0.06,0.924c0,0.912-0.171,1.938-0.684,3.22 l-2.746,7.94c2.673-1.558,4.47-4.454,4.47-7.771C20.991,10.436,20.591,8.967,19.889,7.686z M12,22C6.486,22,2,17.514,2,12 C2,6.486,6.486,2,12,2c5.514,0,10,4.486,10,10C22,17.514,17.514,22,12,22z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const FivehundredpxIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M6.94026,15.1412c.00437.01213.108.29862.168.44064a6.55008,6.55008,0,1,0,6.03191-9.09557,6.68654,6.68654,0,0,0-2.58357.51467A8.53914,8.53914,0,0,0,8.21268,8.61344L8.209,8.61725V3.22948l9.0504-.00008c.32934-.0036.32934-.46353.32934-.61466s0-.61091-.33035-.61467L7.47248,2a.43.43,0,0,0-.43131.42692v7.58355c0,.24466.30476.42131.58793.4819.553.11812.68074-.05864.81617-.2457l.018-.02481A10.52673,10.52673,0,0,1,9.32258,9.258a5.35268,5.35268,0,1,1,7.58985,7.54976,5.417,5.417,0,0,1-3.80867,1.56365,5.17483,5.17483,0,0,1-2.69822-.74478l.00342-4.61111a2.79372,2.79372,0,0,1,.71372-1.78792,2.61611,2.61611,0,0,1,1.98282-.89477,2.75683,2.75683,0,0,1,1.95525.79477,2.66867,2.66867,0,0,1,.79656,1.909,2.724,2.724,0,0,1-2.75849,2.748,4.94651,4.94651,0,0,1-.86254-.13719c-.31234-.093-.44519.34058-.48892.48349-.16811.54966.08453.65862.13687.67489a3.75751,3.75751,0,0,0,1.25234.18375,3.94634,3.94634,0,1,0-2.82444-6.742,3.67478,3.67478,0,0,0-1.13028,2.584l-.00041.02323c-.0035.11667-.00579,2.881-.00644,3.78811l-.00407-.00451a6.18521,6.18521,0,0,1-1.0851-1.86092c-.10544-.27856-.34358-.22925-.66857-.12917-.14192.04372-.57386.17677-.47833.489Zm4.65165-1.08338a.51346.51346,0,0,0,.19513.31818l.02276.022a.52945.52945,0,0,0,.3517.18416.24242.24242,0,0,0,.16577-.0611c.05473-.05082.67382-.67812.73287-.738l.69041.68819a.28978.28978,0,0,0,.21437.11032.53239.53239,0,0,0,.35708-.19486c.29792-.30419.14885-.46821.07676-.54751l-.69954-.69975.72952-.73469c.16-.17311.01874-.35708-.12218-.498-.20461-.20461-.402-.25742-.52855-.14083l-.7254.72665-.73354-.73375a.20128.20128,0,0,0-.14179-.05695.54135.54135,0,0,0-.34379.19648c-.22561.22555-.274.38149-.15656.5059l.73374.7315-.72942.73072A.26589.26589,0,0,0,11.59191,14.05782Zm1.59866-9.915A8.86081,8.86081,0,0,0,9.854,4.776a.26169.26169,0,0,0-.16938.22759.92978.92978,0,0,0,.08619.42094c.05682.14524.20779.531.50006.41955a8.40969,8.40969,0,0,1,2.91968-.55484,7.87875,7.87875,0,0,1,3.086.62286,8.61817,8.61817,0,0,1,2.30562,1.49315.2781.2781,0,0,0,.18318.07586c.15529,0,.30425-.15253.43167-.29551.21268-.23861.35873-.4369.1492-.63538a8.50425,8.50425,0,0,0-2.62312-1.694A9.0177,9.0177,0,0,0,13.19058,4.14283ZM19.50945,18.6236h0a.93171.93171,0,0,0-.36642-.25406.26589.26589,0,0,0-.27613.06613l-.06943.06929A7.90606,7.90606,0,0,1,7.60639,18.505a7.57284,7.57284,0,0,1-1.696-2.51537,8.58715,8.58715,0,0,1-.5147-1.77754l-.00871-.04864c-.04939-.25873-.28755-.27684-.62981-.22448-.14234.02178-.5755.088-.53426.39969l.001.00712a9.08807,9.08807,0,0,0,15.406,4.99094c.00193-.00192.04753-.04718.0725-.07436C19.79425,19.16234,19.87422,18.98728,19.50945,18.6236Z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const AmazonIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M13.582,8.182C11.934,8.367,9.78,8.49,8.238,9.166c-1.781,0.769-3.03,2.337-3.03,4.644 c0,2.953,1.86,4.429,4.253,4.429c2.02,0,3.125-0.477,4.685-2.065c0.516,0.747,0.685,1.109,1.629,1.894 c0.212,0.114,0.483,0.103,0.672-0.066l0.006,0.006c0.567-0.505,1.599-1.401,2.18-1.888c0.231-0.188,0.19-0.496,0.009-0.754 c-0.52-0.718-1.072-1.303-1.072-2.634V8.305c0-1.876,0.133-3.599-1.249-4.891C15.23,2.369,13.422,2,12.04,2 C9.336,2,6.318,3.01,5.686,6.351C5.618,6.706,5.877,6.893,6.109,6.945l2.754,0.298C9.121,7.23,9.308,6.977,9.357,6.72 c0.236-1.151,1.2-1.706,2.284-1.706c0.584,0,1.249,0.215,1.595,0.738c0.398,0.584,0.346,1.384,0.346,2.061V8.182z M13.049,14.088 c-0.451,0.8-1.169,1.291-1.967,1.291c-1.09,0-1.728-0.83-1.728-2.061c0-2.42,2.171-2.86,4.227-2.86v0.615 C13.582,12.181,13.608,13.104,13.049,14.088z M20.683,19.339C18.329,21.076,14.917,22,11.979,22c-4.118,0-7.826-1.522-10.632-4.057 c-0.22-0.199-0.024-0.471,0.241-0.317c3.027,1.762,6.771,2.823,10.639,2.823c2.608,0,5.476-0.541,8.115-1.66 C20.739,18.62,21.072,19.051,20.683,19.339z M21.336,21.043c-0.194,0.163-0.379,0.076-0.293-0.139 c0.284-0.71,0.92-2.298,0.619-2.684c-0.301-0.386-1.99-0.183-2.749-0.092c-0.23,0.027-0.266-0.173-0.059-0.319 c1.348-0.946,3.555-0.673,3.811-0.356C22.925,17.773,22.599,19.986,21.336,21.043z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\n\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const BandcampIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M15.27 17.289 3 17.289 8.73 6.711 21 6.711 15.27 17.289\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const BehanceIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M7.799,5.698c0.589,0,1.12,0.051,1.606,0.156c0.482,0.102,0.894,0.273,1.241,0.507c0.344,0.235,0.612,0.546,0.804,0.938 c0.188,0.387,0.281,0.871,0.281,1.443c0,0.619-0.141,1.137-0.421,1.551c-0.284,0.413-0.7,0.751-1.255,1.014 c0.756,0.218,1.317,0.601,1.689,1.146c0.374,0.549,0.557,1.205,0.557,1.975c0,0.623-0.12,1.161-0.359,1.612 c-0.241,0.457-0.569,0.828-0.973,1.114c-0.408,0.288-0.876,0.5-1.399,0.637C9.052,17.931,8.514,18,7.963,18H2V5.698H7.799 M7.449,10.668c0.481,0,0.878-0.114,1.192-0.345c0.311-0.228,0.463-0.603,0.463-1.119c0-0.286-0.051-0.523-0.152-0.707 C8.848,8.315,8.711,8.171,8.536,8.07C8.362,7.966,8.166,7.894,7.94,7.854c-0.224-0.044-0.457-0.06-0.697-0.06H4.709v2.874H7.449z M7.6,15.905c0.267,0,0.521-0.024,0.759-0.077c0.243-0.053,0.457-0.137,0.637-0.261c0.182-0.12,0.332-0.283,0.441-0.491 C9.547,14.87,9.6,14.602,9.6,14.278c0-0.633-0.18-1.084-0.533-1.357c-0.356-0.27-0.83-0.404-1.413-0.404H4.709v3.388L7.6,15.905z M16.162,15.864c0.367,0.358,0.897,0.538,1.583,0.538c0.493,0,0.92-0.125,1.277-0.374c0.354-0.248,0.571-0.514,0.654-0.79h2.155 c-0.347,1.072-0.872,1.838-1.589,2.299C19.534,18,18.67,18.23,17.662,18.23c-0.701,0-1.332-0.113-1.899-0.337 c-0.567-0.227-1.041-0.544-1.439-0.958c-0.389-0.415-0.689-0.907-0.904-1.484c-0.213-0.574-0.32-1.21-0.32-1.899 c0-0.666,0.11-1.288,0.329-1.863c0.222-0.577,0.529-1.075,0.933-1.492c0.406-0.42,0.885-0.751,1.444-0.994 c0.558-0.241,1.175-0.363,1.857-0.363c0.754,0,1.414,0.145,1.98,0.44c0.563,0.291,1.026,0.686,1.389,1.181 c0.363,0.493,0.622,1.057,0.783,1.69c0.16,0.632,0.217,1.292,0.171,1.983h-6.428C15.557,14.84,15.795,15.506,16.162,15.864 M18.973,11.184c-0.291-0.321-0.783-0.496-1.384-0.496c-0.39,0-0.714,0.066-0.973,0.2c-0.254,0.132-0.461,0.297-0.621,0.491 c-0.157,0.197-0.265,0.405-0.328,0.628c-0.063,0.217-0.101,0.413-0.111,0.587h3.98C19.478,11.969,19.265,11.509,18.973,11.184z M15.057,7.738h4.985V6.524h-4.985L15.057,7.738z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const CodepenIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M22.016,8.84c-0.002-0.013-0.005-0.025-0.007-0.037c-0.005-0.025-0.008-0.048-0.015-0.072 c-0.003-0.015-0.01-0.028-0.013-0.042c-0.008-0.02-0.015-0.04-0.023-0.062c-0.007-0.015-0.013-0.028-0.02-0.042 c-0.008-0.02-0.018-0.037-0.03-0.057c-0.007-0.013-0.017-0.027-0.025-0.038c-0.012-0.018-0.023-0.035-0.035-0.052 c-0.01-0.013-0.02-0.025-0.03-0.037c-0.015-0.017-0.028-0.032-0.043-0.045c-0.01-0.012-0.022-0.023-0.035-0.035 c-0.015-0.015-0.032-0.028-0.048-0.04c-0.012-0.01-0.025-0.02-0.037-0.03c-0.005-0.003-0.01-0.008-0.015-0.012l-9.161-6.096 c-0.289-0.192-0.666-0.192-0.955,0L2.359,8.237C2.354,8.24,2.349,8.245,2.344,8.249L2.306,8.277 c-0.017,0.013-0.033,0.027-0.048,0.04C2.246,8.331,2.234,8.342,2.222,8.352c-0.015,0.015-0.028,0.03-0.042,0.047 c-0.012,0.013-0.022,0.023-0.03,0.037C2.139,8.453,2.125,8.471,2.115,8.488C2.107,8.501,2.099,8.514,2.09,8.526 C2.079,8.548,2.069,8.565,2.06,8.585C2.054,8.6,2.047,8.613,2.04,8.626C2.032,8.648,2.025,8.67,2.019,8.69 c-0.005,0.013-0.01,0.027-0.013,0.042C1.999,8.755,1.995,8.778,1.99,8.803C1.989,8.817,1.985,8.828,1.984,8.84 C1.978,8.879,1.975,8.915,1.975,8.954v6.093c0,0.037,0.003,0.075,0.008,0.112c0.002,0.012,0.005,0.025,0.007,0.038 c0.005,0.023,0.008,0.047,0.015,0.072c0.003,0.015,0.008,0.028,0.013,0.04c0.007,0.022,0.013,0.042,0.022,0.063 c0.007,0.015,0.013,0.028,0.02,0.04c0.008,0.02,0.018,0.038,0.03,0.058c0.007,0.013,0.015,0.027,0.025,0.038 c0.012,0.018,0.023,0.035,0.035,0.052c0.01,0.013,0.02,0.025,0.03,0.037c0.013,0.015,0.028,0.032,0.042,0.045 c0.012,0.012,0.023,0.023,0.035,0.035c0.015,0.013,0.032,0.028,0.048,0.04l0.038,0.03c0.005,0.003,0.01,0.007,0.013,0.01 l9.163,6.095C11.668,21.953,11.833,22,12,22c0.167,0,0.332-0.047,0.478-0.144l9.163-6.095l0.015-0.01 c0.013-0.01,0.027-0.02,0.037-0.03c0.018-0.013,0.035-0.028,0.048-0.04c0.013-0.012,0.025-0.023,0.035-0.035 c0.017-0.015,0.03-0.032,0.043-0.045c0.01-0.013,0.02-0.025,0.03-0.037c0.013-0.018,0.025-0.035,0.035-0.052 c0.008-0.013,0.018-0.027,0.025-0.038c0.012-0.02,0.022-0.038,0.03-0.058c0.007-0.013,0.013-0.027,0.02-0.04 c0.008-0.022,0.015-0.042,0.023-0.063c0.003-0.013,0.01-0.027,0.013-0.04c0.007-0.025,0.01-0.048,0.015-0.072 c0.002-0.013,0.005-0.027,0.007-0.037c0.003-0.042,0.007-0.079,0.007-0.117V8.954C22.025,8.915,22.022,8.879,22.016,8.84z M12.862,4.464l6.751,4.49l-3.016,2.013l-3.735-2.492V4.464z M11.138,4.464v4.009l-3.735,2.494L4.389,8.954L11.138,4.464z M3.699,10.562L5.853,12l-2.155,1.438V10.562z M11.138,19.536l-6.749-4.491l3.015-2.011l3.735,2.492V19.536z M12,14.035L8.953,12 L12,9.966L15.047,12L12,14.035z M12.862,19.536v-4.009l3.735-2.492l3.016,2.011L12.862,19.536z M20.303,13.438L18.147,12 l2.156-1.438L20.303,13.438z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const DeviantArtIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M 18.19 5.636 18.19 2 18.188 2 14.553 2 14.19 2.366 12.474 5.636 11.935 6 5.81 6 5.81 10.994 9.177 10.994 9.477 11.357 5.81 18.363 5.81 22 5.811 22 9.447 22 9.81 21.634 11.526 18.364 12.065 18 18.19 18 18.19 13.006 14.823 13.006 14.523 12.641 18.19 5.636z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const DribbbleIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12,22C6.486,22,2,17.514,2,12S6.486,2,12,2c5.514,0,10,4.486,10,10S17.514,22,12,22z M20.434,13.369 c-0.292-0.092-2.644-0.794-5.32-0.365c1.117,3.07,1.572,5.57,1.659,6.09C18.689,17.798,20.053,15.745,20.434,13.369z M15.336,19.876c-0.127-0.749-0.623-3.361-1.822-6.477c-0.019,0.006-0.038,0.013-0.056,0.019c-4.818,1.679-6.547,5.02-6.701,5.334 c1.448,1.129,3.268,1.803,5.243,1.803C13.183,20.555,14.311,20.313,15.336,19.876z M5.654,17.724 c0.193-0.331,2.538-4.213,6.943-5.637c0.111-0.036,0.224-0.07,0.337-0.102c-0.214-0.485-0.448-0.971-0.692-1.45 c-4.266,1.277-8.405,1.223-8.778,1.216c-0.003,0.087-0.004,0.174-0.004,0.261C3.458,14.207,4.29,16.21,5.654,17.724z M3.639,10.264 c0.382,0.005,3.901,0.02,7.897-1.041c-1.415-2.516-2.942-4.631-3.167-4.94C5.979,5.41,4.193,7.613,3.639,10.264z M9.998,3.709 c0.236,0.316,1.787,2.429,3.187,5c3.037-1.138,4.323-2.867,4.477-3.085C16.154,4.286,14.17,3.471,12,3.471 C11.311,3.471,10.641,3.554,9.998,3.709z M18.612,6.612C18.432,6.855,17,8.69,13.842,9.979c0.199,0.407,0.389,0.821,0.567,1.237 c0.063,0.148,0.124,0.295,0.184,0.441c2.842-0.357,5.666,0.215,5.948,0.275C20.522,9.916,19.801,8.065,18.612,6.612z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const DropboxIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12,6.134L6.069,9.797L2,6.54l5.883-3.843L12,6.134z M2,13.054l5.883,3.843L12,13.459L6.069,9.797L2,13.054z M12,13.459 l4.116,3.439L22,13.054l-4.069-3.257L12,13.459z M22,6.54l-5.884-3.843L12,6.134l5.931,3.663L22,6.54z M12.011,14.2l-4.129,3.426 l-1.767-1.153v1.291l5.896,3.539l5.897-3.539v-1.291l-1.769,1.153L12.011,14.2z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const EtsyIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M9.16033,4.038c0-.27174.02717-.43478.48913-.43478h6.22283c1.087,0,1.68478.92391,2.11957,2.663l.35326,1.38587h1.05978C19.59511,3.712,19.75815,2,19.75815,2s-2.663.29891-4.23913.29891h-7.962L3.29076,2.163v1.1413L4.731,3.57609c1.00543.19022,1.25.40761,1.33152,1.33152,0,0,.08152,2.71739.08152,7.20109s-.08152,7.17391-.08152,7.17391c0,.81522-.32609,1.11413-1.33152,1.30435l-1.44022.27174V22l4.2663-.13587h7.11957c1.60326,0,5.32609.13587,5.32609.13587.08152-.97826.625-5.40761.70652-5.89674H19.7038L18.644,18.52174c-.84239,1.90217-2.06522,2.038-3.42391,2.038H11.1712c-1.3587,0-2.01087-.54348-2.01087-1.712V12.65217s3.0163,0,3.99457.08152c.76087.05435,1.22283.27174,1.46739,1.33152l.32609,1.413h1.16848l-.08152-3.55978.163-3.587H15.02989l-.38043,1.57609c-.24457,1.03261-.40761,1.22283-1.46739,1.33152-1.38587.13587-4.02174.1087-4.02174.1087Z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const FacebookIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const FeedIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M2,8.667V12c5.515,0,10,4.485,10,10h3.333C15.333,14.637,9.363,8.667,2,8.667z M2,2v3.333 c9.19,0,16.667,7.477,16.667,16.667H22C22,10.955,13.045,2,2,2z M4.5,17C3.118,17,2,18.12,2,19.5S3.118,22,4.5,22S7,20.88,7,19.5 S5.882,17,4.5,17z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const FlickrIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M6.5,7c-2.75,0-5,2.25-5,5s2.25,5,5,5s5-2.25,5-5S9.25,7,6.5,7z M17.5,7c-2.75,0-5,2.25-5,5s2.25,5,5,5s5-2.25,5-5 S20.25,7,17.5,7z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const FoursquareIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M17.573,2c0,0-9.197,0-10.668,0S5,3.107,5,3.805s0,16.948,0,16.948c0,0.785,0.422,1.077,0.66,1.172 c0.238,0.097,0.892,0.177,1.285-0.275c0,0,5.035-5.843,5.122-5.93c0.132-0.132,0.132-0.132,0.262-0.132h3.26 c1.368,0,1.588-0.977,1.732-1.552c0.078-0.318,0.692-3.428,1.225-6.122l0.675-3.368C19.56,2.893,19.14,2,17.573,2z M16.495,7.22 c-0.053,0.252-0.372,0.518-0.665,0.518c-0.293,0-4.157,0-4.157,0c-0.467,0-0.802,0.318-0.802,0.787v0.508 c0,0.467,0.337,0.798,0.805,0.798c0,0,3.197,0,3.528,0s0.655,0.362,0.583,0.715c-0.072,0.353-0.407,2.102-0.448,2.295 c-0.04,0.193-0.262,0.523-0.655,0.523c-0.33,0-2.88,0-2.88,0c-0.523,0-0.683,0.068-1.033,0.503 c-0.35,0.437-3.505,4.223-3.505,4.223c-0.032,0.035-0.063,0.027-0.063-0.015V4.852c0-0.298,0.26-0.648,0.648-0.648 c0,0,8.228,0,8.562,0c0.315,0,0.61,0.297,0.528,0.683L16.495,7.22z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const GoodreadsIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M17.3,17.5c-0.2,0.8-0.5,1.4-1,1.9c-0.4,0.5-1,0.9-1.7,1.2C13.9,20.9,13.1,21,12,21c-0.6,0-1.3-0.1-1.9-0.2 c-0.6-0.1-1.1-0.4-1.6-0.7c-0.5-0.3-0.9-0.7-1.2-1.2c-0.3-0.5-0.5-1.1-0.5-1.7h1.5c0.1,0.5,0.2,0.9,0.5,1.2 c0.2,0.3,0.5,0.6,0.9,0.8c0.3,0.2,0.7,0.3,1.1,0.4c0.4,0.1,0.8,0.1,1.2,0.1c1.4,0,2.5-0.4,3.1-1.2c0.6-0.8,1-2,1-3.5v-1.7h0 c-0.4,0.8-0.9,1.4-1.6,1.9c-0.7,0.5-1.5,0.7-2.4,0.7c-1,0-1.9-0.2-2.6-0.5C8.7,15,8.1,14.5,7.7,14c-0.5-0.6-0.8-1.3-1-2.1 c-0.2-0.8-0.3-1.6-0.3-2.5c0-0.9,0.1-1.7,0.4-2.5c0.3-0.8,0.6-1.5,1.1-2c0.5-0.6,1.1-1,1.8-1.4C10.3,3.2,11.1,3,12,3 c0.5,0,0.9,0.1,1.3,0.2c0.4,0.1,0.8,0.3,1.1,0.5c0.3,0.2,0.6,0.5,0.9,0.8c0.3,0.3,0.5,0.6,0.6,1h0V3.4h1.5V15 C17.6,15.9,17.5,16.7,17.3,17.5z M13.8,14.1c0.5-0.3,0.9-0.7,1.3-1.1c0.3-0.5,0.6-1,0.8-1.6c0.2-0.6,0.3-1.2,0.3-1.9 c0-0.6-0.1-1.2-0.2-1.9c-0.1-0.6-0.4-1.2-0.7-1.7c-0.3-0.5-0.7-0.9-1.3-1.2c-0.5-0.3-1.1-0.5-1.9-0.5s-1.4,0.2-1.9,0.5 c-0.5,0.3-1,0.7-1.3,1.2C8.5,6.4,8.3,7,8.1,7.6C8,8.2,7.9,8.9,7.9,9.5c0,0.6,0.1,1.3,0.2,1.9C8.3,12,8.6,12.5,8.9,13 c0.3,0.5,0.8,0.8,1.3,1.1c0.5,0.3,1.1,0.4,1.9,0.4C12.7,14.5,13.3,14.4,13.8,14.1z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const GoogleIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12.02,10.18v3.72v0.01h5.51c-0.26,1.57-1.67,4.22-5.5,4.22c-3.31,0-6.01-2.75-6.01-6.12s2.7-6.12,6.01-6.12 c1.87,0,3.13,0.8,3.85,1.48l2.84-2.76C16.99,2.99,14.73,2,12.03,2c-5.52,0-10,4.48-10,10s4.48,10,10,10c5.77,0,9.6-4.06,9.6-9.77 c0-0.83-0.11-1.42-0.25-2.05H12.02z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const GitHubIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const InstagramIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12,4.622c2.403,0,2.688,0.009,3.637,0.052c0.877,0.04,1.354,0.187,1.671,0.31c0.42,0.163,0.72,0.358,1.035,0.673 c0.315,0.315,0.51,0.615,0.673,1.035c0.123,0.317,0.27,0.794,0.31,1.671c0.043,0.949,0.052,1.234,0.052,3.637 s-0.009,2.688-0.052,3.637c-0.04,0.877-0.187,1.354-0.31,1.671c-0.163,0.42-0.358,0.72-0.673,1.035 c-0.315,0.315-0.615,0.51-1.035,0.673c-0.317,0.123-0.794,0.27-1.671,0.31c-0.949,0.043-1.233,0.052-3.637,0.052 s-2.688-0.009-3.637-0.052c-0.877-0.04-1.354-0.187-1.671-0.31c-0.42-0.163-0.72-0.358-1.035-0.673 c-0.315-0.315-0.51-0.615-0.673-1.035c-0.123-0.317-0.27-0.794-0.31-1.671C4.631,14.688,4.622,14.403,4.622,12 s0.009-2.688,0.052-3.637c0.04-0.877,0.187-1.354,0.31-1.671c0.163-0.42,0.358-0.72,0.673-1.035 c0.315-0.315,0.615-0.51,1.035-0.673c0.317-0.123,0.794-0.27,1.671-0.31C9.312,4.631,9.597,4.622,12,4.622 M12,3 C9.556,3,9.249,3.01,8.289,3.054C7.331,3.098,6.677,3.25,6.105,3.472C5.513,3.702,5.011,4.01,4.511,4.511 c-0.5,0.5-0.808,1.002-1.038,1.594C3.25,6.677,3.098,7.331,3.054,8.289C3.01,9.249,3,9.556,3,12c0,2.444,0.01,2.751,0.054,3.711 c0.044,0.958,0.196,1.612,0.418,2.185c0.23,0.592,0.538,1.094,1.038,1.594c0.5,0.5,1.002,0.808,1.594,1.038 c0.572,0.222,1.227,0.375,2.185,0.418C9.249,20.99,9.556,21,12,21s2.751-0.01,3.711-0.054c0.958-0.044,1.612-0.196,2.185-0.418 c0.592-0.23,1.094-0.538,1.594-1.038c0.5-0.5,0.808-1.002,1.038-1.594c0.222-0.572,0.375-1.227,0.418-2.185 C20.99,14.751,21,14.444,21,12s-0.01-2.751-0.054-3.711c-0.044-0.958-0.196-1.612-0.418-2.185c-0.23-0.592-0.538-1.094-1.038-1.594 c-0.5-0.5-1.002-0.808-1.594-1.038c-0.572-0.222-1.227-0.375-2.185-0.418C14.751,3.01,14.444,3,12,3L12,3z M12,7.378 c-2.552,0-4.622,2.069-4.622,4.622S9.448,16.622,12,16.622s4.622-2.069,4.622-4.622S14.552,7.378,12,7.378z M12,15 c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S13.657,15,12,15z M16.804,6.116c-0.596,0-1.08,0.484-1.08,1.08 s0.484,1.08,1.08,1.08c0.596,0,1.08-0.484,1.08-1.08S17.401,6.116,16.804,6.116z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const LastfmIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M 12.0002 1.5 C 6.2006 1.5 1.5 6.2011 1.5 11.9998 C 1.5 17.799 6.2006 22.5 12.0002 22.5 C 17.799 22.5 22.5 17.799 22.5 11.9998 C 22.5 6.2011 17.799 1.5 12.0002 1.5 Z M 16.1974 16.2204 C 14.8164 16.2152 13.9346 15.587 13.3345 14.1859 L 13.1816 13.8451 L 11.8541 10.8101 C 11.4271 9.7688 10.3526 9.0712 9.1801 9.0712 C 7.5695 9.0712 6.2593 10.3851 6.2593 12.001 C 6.2593 13.6165 7.5695 14.9303 9.1801 14.9303 C 10.272 14.9303 11.2651 14.3275 11.772 13.3567 C 11.7893 13.3235 11.8239 13.302 11.863 13.3038 C 11.9007 13.3054 11.9353 13.3288 11.9504 13.3632 L 12.4865 14.6046 C 12.5016 14.639 12.4956 14.6778 12.4723 14.7069 C 11.6605 15.6995 10.4602 16.2683 9.1801 16.2683 C 6.8331 16.2683 4.9234 14.3536 4.9234 12.001 C 4.9234 9.6468 6.833 7.732 9.1801 7.732 C 10.9572 7.732 12.3909 8.6907 13.1138 10.3636 C 13.1206 10.3802 13.8412 12.0708 14.4744 13.5191 C 14.8486 14.374 15.1462 14.896 16.1288 14.9292 C 17.0663 14.9613 17.7538 14.4122 17.7538 13.6485 C 17.7538 12.9691 17.3321 12.8004 16.3803 12.4822 C 14.7365 11.9398 13.845 11.3861 13.845 10.0182 C 13.845 8.6809 14.7667 7.8162 16.192 7.8162 C 17.1288 7.8162 17.8155 8.2287 18.2921 9.0768 C 18.305 9.1006 18.3079 9.1281 18.3004 9.1542 C 18.2929 9.1803 18.2748 9.2021 18.2507 9.2138 L 17.3614 9.669 C 17.3178 9.692 17.2643 9.6781 17.2356 9.6385 C 16.9329 9.2135 16.5956 9.0251 16.1423 9.0251 C 15.5512 9.0251 15.122 9.429 15.122 9.9865 C 15.122 10.6738 15.6529 10.8414 16.5339 11.1192 C 16.6491 11.1558 16.7696 11.194 16.8939 11.2343 C 18.2763 11.6865 19.0768 12.2311 19.0768 13.6836 C 19.0769 15.1297 17.8389 16.2204 16.1974 16.2204 Z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const LinkedInIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const MailIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M20,4H4C2.895,4,2,4.895,2,6v12c0,1.105,0.895,2,2,2h16c1.105,0,2-0.895,2-2V6C22,4.895,21.105,4,20,4z M20,8.236l-8,4.882 L4,8.236V6h16V8.236z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const MastodonIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M23.193 7.879c0-5.206-3.411-6.732-3.411-6.732C18.062.357 15.108.025 12.041 0h-.076c-3.068.025-6.02.357-7.74 1.147 0 0-3.411 1.526-3.411 6.732 0 1.192-.023 2.618.015 4.129.124 5.092.934 10.109 5.641 11.355 2.17.574 4.034.695 5.535.612 2.722-.15 4.25-.972 4.25-.972l-.09-1.975s-1.945.613-4.129.539c-2.165-.074-4.449-.233-4.799-2.891a5.499 5.499 0 0 1-.048-.745s2.125.52 4.817.643c1.646.075 3.19-.097 4.758-.283 3.007-.359 5.625-2.212 5.954-3.905.517-2.665.475-6.507.475-6.507zm-4.024 6.709h-2.497V8.469c0-1.29-.543-1.944-1.628-1.944-1.2 0-1.802.776-1.802 2.312v3.349h-2.483v-3.35c0-1.536-.602-2.312-1.802-2.312-1.085 0-1.628.655-1.628 1.944v6.119H4.832V8.284c0-1.289.328-2.313.987-3.07.68-.758 1.569-1.146 2.674-1.146 1.278 0 2.246.491 2.886 1.474L12 6.585l.622-1.043c.64-.983 1.608-1.474 2.886-1.474 1.104 0 1.994.388 2.674 1.146.658.757.986 1.781.986 3.07v6.304z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const MeetupIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M19.24775,14.722a3.57032,3.57032,0,0,1-2.94457,3.52073,3.61886,3.61886,0,0,1-.64652.05634c-.07314-.0008-.10187.02846-.12507.09547A2.38881,2.38881,0,0,1,13.49453,20.094a2.33092,2.33092,0,0,1-1.827-.50716.13635.13635,0,0,0-.19878-.00408,3.191,3.191,0,0,1-2.104.60248,3.26309,3.26309,0,0,1-3.00324-2.71993,2.19076,2.19076,0,0,1-.03512-.30865c-.00156-.08579-.03413-.1189-.11608-.13493a2.86421,2.86421,0,0,1-1.23189-.56111,2.945,2.945,0,0,1-1.166-2.05749,2.97484,2.97484,0,0,1,.87524-2.50774.112.112,0,0,0,.02091-.16107,2.7213,2.7213,0,0,1-.36648-1.48A2.81256,2.81256,0,0,1,6.57673,7.58838a.35764.35764,0,0,0,.28869-.22819,4.2208,4.2208,0,0,1,6.02892-1.90111.25161.25161,0,0,0,.22023.0243,3.65608,3.65608,0,0,1,3.76031.90678A3.57244,3.57244,0,0,1,17.95918,8.626a2.97339,2.97339,0,0,1,.01829.57356.10637.10637,0,0,0,.0853.12792,1.97669,1.97669,0,0,1,1.27939,1.33733,2.00266,2.00266,0,0,1-.57112,2.12652c-.05284.05166-.04168.08328-.01173.13489A3.51189,3.51189,0,0,1,19.24775,14.722Zm-6.35959-.27836a1.6984,1.6984,0,0,0,1.14556,1.61113,3.82039,3.82039,0,0,0,1.036.17935,1.46888,1.46888,0,0,0,.73509-.12255.44082.44082,0,0,0,.26057-.44274.45312.45312,0,0,0-.29211-.43375.97191.97191,0,0,0-.20678-.063c-.21326-.03806-.42754-.0701-.63973-.11215a.54787.54787,0,0,1-.50172-.60926,2.75864,2.75864,0,0,1,.1773-.901c.1763-.535.414-1.045.64183-1.55913A12.686,12.686,0,0,0,15.85,10.47863a1.58461,1.58461,0,0,0,.04861-.87208,1.04531,1.04531,0,0,0-.85432-.83981,1.60658,1.60658,0,0,0-1.23654.16594.27593.27593,0,0,1-.36286-.03413c-.085-.0747-.16594-.15379-.24918-.23055a.98682.98682,0,0,0-1.33577-.04933,6.1468,6.1468,0,0,1-.4989.41615.47762.47762,0,0,1-.51535.03566c-.17448-.09307-.35512-.175-.53531-.25665a1.74949,1.74949,0,0,0-.56476-.2016,1.69943,1.69943,0,0,0-1.61654.91787,8.05815,8.05815,0,0,0-.32952.80126c-.45471,1.2557-.82507,2.53825-1.20838,3.81639a1.24151,1.24151,0,0,0,.51532,1.44389,1.42659,1.42659,0,0,0,1.22008.17166,1.09728,1.09728,0,0,0,.66994-.69764c.44145-1.04111.839-2.09989,1.25981-3.14926.11581-.28876.22792-.57874.35078-.86438a.44548.44548,0,0,1,.69189-.19539.50521.50521,0,0,1,.15044.43836,1.75625,1.75625,0,0,1-.14731.50453c-.27379.69219-.55265,1.38236-.82766,2.074a2.0836,2.0836,0,0,0-.14038.42876.50719.50719,0,0,0,.27082.57722.87236.87236,0,0,0,.66145.02739.99137.99137,0,0,0,.53406-.532q.61571-1.20914,1.228-2.42031.28423-.55863.57585-1.1133a.87189.87189,0,0,1,.29055-.35253.34987.34987,0,0,1,.37634-.01265.30291.30291,0,0,1,.12434.31459.56716.56716,0,0,1-.04655.1915c-.05318.12739-.10286.25669-.16183.38156-.34118.71775-.68754,1.43273-1.02568,2.152A2.00213,2.00213,0,0,0,12.88816,14.44366Zm4.78568,5.28972a.88573.88573,0,0,0-1.77139.00465.8857.8857,0,0,0,1.77139-.00465Zm-14.83838-7.296a.84329.84329,0,1,0,.00827-1.68655.8433.8433,0,0,0-.00827,1.68655Zm10.366-9.43673a.83506.83506,0,1,0-.0091,1.67.83505.83505,0,0,0,.0091-1.67Zm6.85014,5.22a.71651.71651,0,0,0-1.433.0093.71656.71656,0,0,0,1.433-.0093ZM5.37528,6.17908A.63823.63823,0,1,0,6.015,5.54483.62292.62292,0,0,0,5.37528,6.17908Zm6.68214,14.80843a.54949.54949,0,1,0-.55052.541A.54556.54556,0,0,0,12.05742,20.98752Zm8.53235-8.49689a.54777.54777,0,0,0-.54027.54023.53327.53327,0,0,0,.532.52293.51548.51548,0,0,0,.53272-.5237A.53187.53187,0,0,0,20.58977,12.49063ZM7.82846,2.4715a.44927.44927,0,1,0,.44484.44766A.43821.43821,0,0,0,7.82846,2.4715Zm13.775,7.60492a.41186.41186,0,0,0-.40065.39623.40178.40178,0,0,0,.40168.40168A.38994.38994,0,0,0,22,10.48172.39946.39946,0,0,0,21.60349,10.07642ZM5.79193,17.96207a.40469.40469,0,0,0-.397-.39646.399.399,0,0,0-.396.405.39234.39234,0,0,0,.39939.389A.39857.39857,0,0,0,5.79193,17.96207Z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const MediumIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Circle, Rect, SVG } from '@wordpress/primitives';\n\nexport const PatreonIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 569 546\" version=\"1.1\">\n\t\t<Circle cx=\"363\" cy=\"205\" r=\"205\" />\n\t\t<Rect width=\"100\" height=\"546\" x=\"0\" y=\"0\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const PinterestIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12.289,2C6.617,2,3.606,5.648,3.606,9.622c0,1.846,1.025,4.146,2.666,4.878c0.25,0.111,0.381,0.063,0.439-0.169 c0.044-0.175,0.267-1.029,0.365-1.428c0.032-0.128,0.017-0.237-0.091-0.362C6.445,11.911,6.01,10.75,6.01,9.668 c0-2.777,2.194-5.464,5.933-5.464c3.23,0,5.49,2.108,5.49,5.122c0,3.407-1.794,5.768-4.13,5.768c-1.291,0-2.257-1.021-1.948-2.277 c0.372-1.495,1.089-3.112,1.089-4.191c0-0.967-0.542-1.775-1.663-1.775c-1.319,0-2.379,1.309-2.379,3.059 c0,1.115,0.394,1.869,0.394,1.869s-1.302,5.279-1.54,6.261c-0.405,1.666,0.053,4.368,0.094,4.604 c0.021,0.126,0.167,0.169,0.25,0.063c0.129-0.165,1.699-2.419,2.142-4.051c0.158-0.59,0.817-2.995,0.817-2.995 c0.43,0.784,1.681,1.446,3.013,1.446c3.963,0,6.822-3.494,6.822-7.833C20.394,5.112,16.849,2,12.289,2\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const PocketIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M21.927,4.194C21.667,3.48,20.982,3,20.222,3h-0.01h-1.721H3.839C3.092,3,2.411,3.47,2.145,4.17 C2.066,4.378,2.026,4.594,2.026,4.814v6.035l0.069,1.2c0.29,2.73,1.707,5.115,3.899,6.778c0.039,0.03,0.079,0.059,0.119,0.089 l0.025,0.018c1.175,0.859,2.491,1.441,3.91,1.727c0.655,0.132,1.325,0.2,1.991,0.2c0.615,0,1.232-0.057,1.839-0.17 c0.073-0.014,0.145-0.028,0.219-0.044c0.02-0.004,0.042-0.012,0.064-0.023c1.359-0.297,2.621-0.864,3.753-1.691l0.025-0.018 c0.04-0.029,0.08-0.058,0.119-0.089c2.192-1.664,3.609-4.049,3.898-6.778l0.069-1.2V4.814C22.026,4.605,22,4.398,21.927,4.194z M17.692,10.481l-4.704,4.512c-0.266,0.254-0.608,0.382-0.949,0.382c-0.342,0-0.684-0.128-0.949-0.382l-4.705-4.512 C5.838,9.957,5.82,9.089,6.344,8.542c0.524-0.547,1.392-0.565,1.939-0.04l3.756,3.601l3.755-3.601 c0.547-0.524,1.415-0.506,1.939,0.04C18.256,9.089,18.238,9.956,17.692,10.481z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const RedditIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M22 12.068a2.184 2.184 0 0 0-2.186-2.186c-.592 0-1.13.233-1.524.609-1.505-1.075-3.566-1.774-5.86-1.864l1.004-4.695 3.261.699A1.56 1.56 0 1 0 18.255 3c-.61-.001-1.147.357-1.398.877l-3.638-.77a.382.382 0 0 0-.287.053.348.348 0 0 0-.161.251l-1.112 5.233c-2.33.072-4.426.77-5.95 1.864a2.201 2.201 0 0 0-1.523-.61 2.184 2.184 0 0 0-.896 4.176c-.036.215-.053.43-.053.663 0 3.37 3.924 6.111 8.763 6.111s8.763-2.724 8.763-6.11c0-.216-.017-.449-.053-.664A2.207 2.207 0 0 0 22 12.068Zm-15.018 1.56a1.56 1.56 0 0 1 3.118 0c0 .86-.699 1.558-1.559 1.558-.86.018-1.559-.699-1.559-1.559Zm8.728 4.139c-1.076 1.075-3.119 1.147-3.71 1.147-.61 0-2.652-.09-3.71-1.147a.4.4 0 0 1 0-.573.4.4 0 0 1 .574 0c.68.68 2.114.914 3.136.914 1.022 0 2.473-.233 3.136-.914a.4.4 0 0 1 .574 0 .436.436 0 0 1 0 .573Zm-.287-2.563a1.56 1.56 0 0 1 0-3.118c.86 0 1.56.699 1.56 1.56 0 .841-.7 1.558-1.56 1.558Z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const SkypeIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M10.113,2.699c0.033-0.006,0.067-0.013,0.1-0.02c0.033,0.017,0.066,0.033,0.098,0.051L10.113,2.699z M2.72,10.223 c-0.006,0.034-0.011,0.069-0.017,0.103c0.018,0.032,0.033,0.064,0.051,0.095L2.72,10.223z M21.275,13.771 c0.007-0.035,0.011-0.071,0.018-0.106c-0.018-0.031-0.033-0.064-0.052-0.095L21.275,13.771z M13.563,21.199 c0.032,0.019,0.065,0.035,0.096,0.053c0.036-0.006,0.071-0.011,0.105-0.017L13.563,21.199z M22,16.386 c0,1.494-0.581,2.898-1.637,3.953c-1.056,1.057-2.459,1.637-3.953,1.637c-0.967,0-1.914-0.251-2.75-0.725 c0.036-0.006,0.071-0.011,0.105-0.017l-0.202-0.035c0.032,0.019,0.065,0.035,0.096,0.053c-0.543,0.096-1.099,0.147-1.654,0.147 c-1.275,0-2.512-0.25-3.676-0.743c-1.125-0.474-2.135-1.156-3.002-2.023c-0.867-0.867-1.548-1.877-2.023-3.002 c-0.493-1.164-0.743-2.401-0.743-3.676c0-0.546,0.049-1.093,0.142-1.628c0.018,0.032,0.033,0.064,0.051,0.095L2.72,10.223 c-0.006,0.034-0.011,0.069-0.017,0.103C2.244,9.5,2,8.566,2,7.615c0-1.493,0.582-2.898,1.637-3.953 c1.056-1.056,2.46-1.638,3.953-1.638c0.915,0,1.818,0.228,2.622,0.655c-0.033,0.007-0.067,0.013-0.1,0.02l0.199,0.031 c-0.032-0.018-0.066-0.034-0.098-0.051c0.002,0,0.003-0.001,0.004-0.001c0.586-0.112,1.187-0.169,1.788-0.169 c1.275,0,2.512,0.249,3.676,0.742c1.124,0.476,2.135,1.156,3.002,2.024c0.868,0.867,1.548,1.877,2.024,3.002 c0.493,1.164,0.743,2.401,0.743,3.676c0,0.575-0.054,1.15-0.157,1.712c-0.018-0.031-0.033-0.064-0.052-0.095l0.034,0.201 c0.007-0.035,0.011-0.071,0.018-0.106C21.754,14.494,22,15.432,22,16.386z M16.817,14.138c0-1.331-0.613-2.743-3.033-3.282 l-2.209-0.49c-0.84-0.192-1.807-0.444-1.807-1.237c0-0.794,0.679-1.348,1.903-1.348c2.468,0,2.243,1.696,3.468,1.696 c0.645,0,1.209-0.379,1.209-1.031c0-1.521-2.435-2.663-4.5-2.663c-2.242,0-4.63,0.952-4.63,3.488c0,1.221,0.436,2.521,2.839,3.123 l2.984,0.745c0.903,0.223,1.129,0.731,1.129,1.189c0,0.762-0.758,1.507-2.129,1.507c-2.679,0-2.307-2.062-3.743-2.062 c-0.645,0-1.113,0.444-1.113,1.078c0,1.236,1.501,2.886,4.856,2.886C15.236,17.737,16.817,16.199,16.817,14.138z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const SnapchatIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12.065,2a5.526,5.526,0,0,1,3.132.892A5.854,5.854,0,0,1,17.326,5.4a5.821,5.821,0,0,1,.351,2.33q0,.612-.117,2.487a.809.809,0,0,0,.365.091,1.93,1.93,0,0,0,.664-.176,1.93,1.93,0,0,1,.664-.176,1.3,1.3,0,0,1,.729.234.7.7,0,0,1,.351.6.839.839,0,0,1-.41.7,2.732,2.732,0,0,1-.9.41,3.192,3.192,0,0,0-.9.378.728.728,0,0,0-.41.618,1.575,1.575,0,0,0,.156.56,6.9,6.9,0,0,0,1.334,1.953,5.6,5.6,0,0,0,1.881,1.315,5.875,5.875,0,0,0,1.042.3.42.42,0,0,1,.365.456q0,.911-2.852,1.341a1.379,1.379,0,0,0-.143.507,1.8,1.8,0,0,1-.182.605.451.451,0,0,1-.429.241,5.878,5.878,0,0,1-.807-.085,5.917,5.917,0,0,0-.833-.085,4.217,4.217,0,0,0-.807.065,2.42,2.42,0,0,0-.82.293,6.682,6.682,0,0,0-.755.5q-.351.267-.755.527a3.886,3.886,0,0,1-.989.436A4.471,4.471,0,0,1,11.831,22a4.307,4.307,0,0,1-1.256-.176,3.784,3.784,0,0,1-.976-.436q-.4-.26-.749-.527a6.682,6.682,0,0,0-.755-.5,2.422,2.422,0,0,0-.807-.293,4.432,4.432,0,0,0-.82-.065,5.089,5.089,0,0,0-.853.1,5,5,0,0,1-.762.1.474.474,0,0,1-.456-.241,1.819,1.819,0,0,1-.182-.618,1.411,1.411,0,0,0-.143-.521q-2.852-.429-2.852-1.341a.42.42,0,0,1,.365-.456,5.793,5.793,0,0,0,1.042-.3,5.524,5.524,0,0,0,1.881-1.315,6.789,6.789,0,0,0,1.334-1.953A1.575,1.575,0,0,0,6,12.9a.728.728,0,0,0-.41-.618,3.323,3.323,0,0,0-.9-.384,2.912,2.912,0,0,1-.9-.41.814.814,0,0,1-.41-.684.71.71,0,0,1,.338-.593,1.208,1.208,0,0,1,.716-.241,1.976,1.976,0,0,1,.625.169,2.008,2.008,0,0,0,.69.169.919.919,0,0,0,.416-.091q-.117-1.849-.117-2.474A5.861,5.861,0,0,1,6.385,5.4,5.516,5.516,0,0,1,8.625,2.819,7.075,7.075,0,0,1,12.062,2Z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const SoundCloudIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M8.9,16.1L9,14L8.9,9.5c0-0.1,0-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c-0.1,0-0.1,0-0.1,0.1c0,0-0.1,0.1-0.1,0.1L8.3,14l0.1,2.1 c0,0.1,0,0.1,0.1,0.1c0,0,0.1,0.1,0.1,0.1C8.8,16.3,8.9,16.3,8.9,16.1z M11.4,15.9l0.1-1.8L11.4,9c0-0.1,0-0.2-0.1-0.2 c0,0-0.1,0-0.1,0s-0.1,0-0.1,0c-0.1,0-0.1,0.1-0.1,0.2l0,0.1l-0.1,5c0,0,0,0.7,0.1,2v0c0,0.1,0,0.1,0.1,0.1c0.1,0.1,0.1,0.1,0.2,0.1 c0.1,0,0.1,0,0.2-0.1c0.1,0,0.1-0.1,0.1-0.2L11.4,15.9z M2.4,12.9L2.5,14l-0.2,1.1c0,0.1,0,0.1-0.1,0.1c0,0-0.1,0-0.1-0.1L2.1,14 l0.1-1.1C2.2,12.9,2.3,12.9,2.4,12.9C2.3,12.9,2.4,12.9,2.4,12.9z M3.1,12.2L3.3,14l-0.2,1.8c0,0.1,0,0.1-0.1,0.1 c-0.1,0-0.1,0-0.1-0.1L2.8,14L3,12.2C3,12.2,3,12.2,3.1,12.2C3.1,12.2,3.1,12.2,3.1,12.2z M3.9,11.9L4.1,14l-0.2,2.1 c0,0.1,0,0.1-0.1,0.1c-0.1,0-0.1,0-0.1-0.1L3.5,14l0.2-2.1c0-0.1,0-0.1,0.1-0.1C3.9,11.8,3.9,11.8,3.9,11.9z M4.7,11.9L4.9,14 l-0.2,2.1c0,0.1-0.1,0.1-0.1,0.1c-0.1,0-0.1,0-0.1-0.1L4.3,14l0.2-2.2c0-0.1,0-0.1,0.1-0.1C4.7,11.7,4.7,11.8,4.7,11.9z M5.6,12 l0.2,2l-0.2,2.1c0,0.1-0.1,0.1-0.1,0.1c0,0-0.1,0-0.1,0c0,0,0-0.1,0-0.1L5.1,14l0.2-2c0,0,0-0.1,0-0.1s0.1,0,0.1,0 C5.5,11.9,5.5,11.9,5.6,12L5.6,12z M6.4,10.7L6.6,14l-0.2,2.1c0,0,0,0.1,0,0.1c0,0-0.1,0-0.1,0c-0.1,0-0.1-0.1-0.2-0.2L5.9,14 l0.2-3.3c0-0.1,0.1-0.2,0.2-0.2c0,0,0.1,0,0.1,0C6.4,10.7,6.4,10.7,6.4,10.7z M7.2,10l0.2,4.1l-0.2,2.1c0,0,0,0.1,0,0.1 c0,0-0.1,0-0.1,0c-0.1,0-0.2-0.1-0.2-0.2l-0.1-2.1L6.8,10c0-0.1,0.1-0.2,0.2-0.2c0,0,0.1,0,0.1,0S7.2,9.9,7.2,10z M8,9.6L8.2,14 L8,16.1c0,0.1-0.1,0.2-0.2,0.2c-0.1,0-0.2-0.1-0.2-0.2L7.5,14l0.1-4.4c0-0.1,0-0.1,0.1-0.1c0,0,0.1-0.1,0.1-0.1c0.1,0,0.1,0,0.1,0.1 C8,9.6,8,9.6,8,9.6z M11.4,16.1L11.4,16.1L11.4,16.1z M9.7,9.6L9.8,14l-0.1,2.1c0,0.1,0,0.1-0.1,0.2s-0.1,0.1-0.2,0.1 c-0.1,0-0.1,0-0.1-0.1s-0.1-0.1-0.1-0.2L9.2,14l0.1-4.4c0-0.1,0-0.1,0.1-0.2s0.1-0.1,0.2-0.1c0.1,0,0.1,0,0.2,0.1S9.7,9.5,9.7,9.6 L9.7,9.6z M10.6,9.8l0.1,4.3l-0.1,2c0,0.1,0,0.1-0.1,0.2c0,0-0.1,0.1-0.2,0.1c-0.1,0-0.1,0-0.2-0.1c0,0-0.1-0.1-0.1-0.2L10,14 l0.1-4.3c0-0.1,0-0.1,0.1-0.2c0,0,0.1-0.1,0.2-0.1c0.1,0,0.1,0,0.2,0.1S10.6,9.7,10.6,9.8z M12.4,14l-0.1,2c0,0.1,0,0.1-0.1,0.2 c-0.1,0.1-0.1,0.1-0.2,0.1c-0.1,0-0.1,0-0.2-0.1c-0.1-0.1-0.1-0.1-0.1-0.2l-0.1-1l-0.1-1l0.1-5.5v0c0-0.1,0-0.2,0.1-0.2 c0.1,0,0.1-0.1,0.2-0.1c0,0,0.1,0,0.1,0c0.1,0,0.1,0.1,0.1,0.2L12.4,14z M22.1,13.9c0,0.7-0.2,1.3-0.7,1.7c-0.5,0.5-1.1,0.7-1.7,0.7 h-6.8c-0.1,0-0.1,0-0.2-0.1c-0.1-0.1-0.1-0.1-0.1-0.2V8.2c0-0.1,0.1-0.2,0.2-0.3c0.5-0.2,1-0.3,1.6-0.3c1.1,0,2.1,0.4,2.9,1.1 c0.8,0.8,1.3,1.7,1.4,2.8c0.3-0.1,0.6-0.2,1-0.2c0.7,0,1.3,0.2,1.7,0.7C21.8,12.6,22.1,13.2,22.1,13.9L22.1,13.9z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const SpotifyIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12,2C6.477,2,2,6.477,2,12c0,5.523,4.477,10,10,10c5.523,0,10-4.477,10-10C22,6.477,17.523,2,12,2 M16.586,16.424 c-0.18,0.295-0.563,0.387-0.857,0.207c-2.348-1.435-5.304-1.76-8.785-0.964c-0.335,0.077-0.67-0.133-0.746-0.469 c-0.077-0.335,0.132-0.67,0.469-0.746c3.809-0.871,7.077-0.496,9.713,1.115C16.673,15.746,16.766,16.13,16.586,16.424 M17.81,13.7 c-0.226,0.367-0.706,0.482-1.072,0.257c-2.687-1.652-6.785-2.131-9.965-1.166C6.36,12.917,5.925,12.684,5.8,12.273 C5.675,11.86,5.908,11.425,6.32,11.3c3.632-1.102,8.147-0.568,11.234,1.328C17.92,12.854,18.035,13.335,17.81,13.7 M17.915,10.865 c-3.223-1.914-8.54-2.09-11.618-1.156C5.804,9.859,5.281,9.58,5.131,9.086C4.982,8.591,5.26,8.069,5.755,7.919 c3.532-1.072,9.404-0.865,13.115,1.338c0.445,0.264,0.59,0.838,0.327,1.282C18.933,10.983,18.359,11.129,17.915,10.865\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const TelegramIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 128 128\" version=\"1.1\">\n\t\t<Path d=\"M28.9700376,63.3244248 C47.6273373,55.1957357 60.0684594,49.8368063 66.2934036,47.2476366 C84.0668845,39.855031 87.7600616,38.5708563 90.1672227,38.528 C90.6966555,38.5191258 91.8804274,38.6503351 92.6472251,39.2725385 C93.294694,39.7979149 93.4728387,40.5076237 93.5580865,41.0057381 C93.6433345,41.5038525 93.7494885,42.63857 93.6651041,43.5252052 C92.7019529,53.6451182 88.5344133,78.2034783 86.4142057,89.5379542 C85.5170662,94.3339958 83.750571,95.9420841 82.0403991,96.0994568 C78.3237996,96.4414641 75.5015827,93.6432685 71.9018743,91.2836143 C66.2690414,87.5912212 63.0868492,85.2926952 57.6192095,81.6896017 C51.3004058,77.5256038 55.3966232,75.2369981 58.9976911,71.4967761 C59.9401076,70.5179421 76.3155302,55.6232293 76.6324771,54.2720454 C76.6721165,54.1030573 76.7089039,53.4731496 76.3346867,53.1405352 C75.9604695,52.8079208 75.4081573,52.921662 75.0095933,53.0121213 C74.444641,53.1403447 65.4461175,59.0880351 48.0140228,70.8551922 C45.4598218,72.6091037 43.1463059,73.4636682 41.0734751,73.4188859 C38.7883453,73.3695169 34.3926725,72.1268388 31.1249416,71.0646282 C27.1169366,69.7617838 23.931454,69.0729605 24.208838,66.8603276 C24.3533167,65.7078514 25.9403832,64.5292172 28.9700376,63.3244248 Z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const TiktokIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 32 32\" version=\"1.1\">\n\t\t<Path d=\"M16.708 0.027c1.745-0.027 3.48-0.011 5.213-0.027 0.105 2.041 0.839 4.12 2.333 5.563 1.491 1.479 3.6 2.156 5.652 2.385v5.369c-1.923-0.063-3.855-0.463-5.6-1.291-0.76-0.344-1.468-0.787-2.161-1.24-0.009 3.896 0.016 7.787-0.025 11.667-0.104 1.864-0.719 3.719-1.803 5.255-1.744 2.557-4.771 4.224-7.88 4.276-1.907 0.109-3.812-0.411-5.437-1.369-2.693-1.588-4.588-4.495-4.864-7.615-0.032-0.667-0.043-1.333-0.016-1.984 0.24-2.537 1.495-4.964 3.443-6.615 2.208-1.923 5.301-2.839 8.197-2.297 0.027 1.975-0.052 3.948-0.052 5.923-1.323-0.428-2.869-0.308-4.025 0.495-0.844 0.547-1.485 1.385-1.819 2.333-0.276 0.676-0.197 1.427-0.181 2.145 0.317 2.188 2.421 4.027 4.667 3.828 1.489-0.016 2.916-0.88 3.692-2.145 0.251-0.443 0.532-0.896 0.547-1.417 0.131-2.385 0.079-4.76 0.095-7.145 0.011-5.375-0.016-10.735 0.025-16.093z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const TumblrIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M17.04 21.28h-3.28c-2.84 0-4.94-1.37-4.94-5.02v-5.67H6.08V7.5c2.93-.73 4.11-3.3 4.3-5.48h3.01v4.93h3.47v3.65H13.4v4.93c0 1.47.73 2.01 1.92 2.01h1.73v3.75z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const TwitchIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M16.499,8.089h-1.636v4.91h1.636V8.089z M12,8.089h-1.637v4.91H12V8.089z M4.228,3.178L3,6.451v13.092h4.499V22h2.456 l2.454-2.456h3.681L21,14.636V3.178H4.228z M19.364,13.816l-2.864,2.865H12l-2.453,2.453V16.68H5.863V4.814h13.501V13.816z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const TwitterIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const VimeoIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M22.396,7.164c-0.093,2.026-1.507,4.799-4.245,8.32C15.322,19.161,12.928,21,10.97,21c-1.214,0-2.24-1.119-3.079-3.359 c-0.56-2.053-1.119-4.106-1.68-6.159C5.588,9.243,4.921,8.122,4.206,8.122c-0.156,0-0.701,0.328-1.634,0.98L1.594,7.841 c1.027-0.902,2.04-1.805,3.037-2.708C6.001,3.95,7.03,3.327,7.715,3.264c1.619-0.156,2.616,0.951,2.99,3.321 c0.404,2.557,0.685,4.147,0.841,4.769c0.467,2.121,0.981,3.181,1.542,3.181c0.435,0,1.09-0.688,1.963-2.065 c0.871-1.376,1.338-2.422,1.401-3.142c0.125-1.187-0.343-1.782-1.401-1.782c-0.498,0-1.012,0.115-1.541,0.341 c1.023-3.35,2.977-4.977,5.862-4.884C21.511,3.066,22.52,4.453,22.396,7.164z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const VkIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M22,7.1c0.2,0.4-0.4,1.5-1.6,3.1c-0.2,0.2-0.4,0.5-0.7,0.9c-0.5,0.7-0.9,1.1-0.9,1.4c-0.1,0.3-0.1,0.6,0.1,0.8 c0.1,0.1,0.4,0.4,0.8,0.9h0l0,0c1,0.9,1.6,1.7,2,2.3c0,0,0,0.1,0.1,0.1c0,0.1,0,0.1,0.1,0.3c0,0.1,0,0.2,0,0.4 c0,0.1-0.1,0.2-0.3,0.3c-0.1,0.1-0.4,0.1-0.6,0.1l-2.7,0c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.4-0.1-0.5-0.2l-0.2-0.1 c-0.2-0.1-0.5-0.4-0.7-0.7s-0.5-0.6-0.7-0.8c-0.2-0.2-0.4-0.4-0.6-0.6C14.8,15,14.6,15,14.4,15c0,0,0,0-0.1,0c0,0-0.1,0.1-0.2,0.2 c-0.1,0.1-0.2,0.2-0.2,0.3c-0.1,0.1-0.1,0.3-0.2,0.5c-0.1,0.2-0.1,0.5-0.1,0.8c0,0.1,0,0.2,0,0.3c0,0.1-0.1,0.2-0.1,0.2l0,0.1 c-0.1,0.1-0.3,0.2-0.6,0.2h-1.2c-0.5,0-1,0-1.5-0.2c-0.5-0.1-1-0.3-1.4-0.6s-0.7-0.5-1.1-0.7s-0.6-0.4-0.7-0.6l-0.3-0.3 c-0.1-0.1-0.2-0.2-0.3-0.3s-0.4-0.5-0.7-0.9s-0.7-1-1.1-1.6c-0.4-0.6-0.8-1.3-1.3-2.2C2.9,9.4,2.5,8.5,2.1,7.5C2,7.4,2,7.3,2,7.2 c0-0.1,0-0.1,0-0.2l0-0.1c0.1-0.1,0.3-0.2,0.6-0.2l2.9,0c0.1,0,0.2,0,0.2,0.1S5.9,6.9,5.9,7L6,7c0.1,0.1,0.2,0.2,0.3,0.3 C6.4,7.7,6.5,8,6.7,8.4C6.9,8.8,7,9,7.1,9.2l0.2,0.3c0.2,0.4,0.4,0.8,0.6,1.1c0.2,0.3,0.4,0.5,0.5,0.7s0.3,0.3,0.4,0.4 c0.1,0.1,0.3,0.1,0.4,0.1c0.1,0,0.2,0,0.3-0.1c0,0,0,0,0.1-0.1c0,0,0.1-0.1,0.1-0.2c0.1-0.1,0.1-0.3,0.1-0.5c0-0.2,0.1-0.5,0.1-0.8 c0-0.4,0-0.8,0-1.3c0-0.3,0-0.5-0.1-0.8c0-0.2-0.1-0.4-0.1-0.5L9.6,7.6C9.4,7.3,9.1,7.2,8.7,7.1C8.6,7.1,8.6,7,8.7,6.9 C8.9,6.7,9,6.6,9.1,6.5c0.4-0.2,1.2-0.3,2.5-0.3c0.6,0,1,0.1,1.4,0.1c0.1,0,0.3,0.1,0.3,0.1c0.1,0.1,0.2,0.1,0.2,0.3 c0,0.1,0.1,0.2,0.1,0.3s0,0.3,0,0.5c0,0.2,0,0.4,0,0.6c0,0.2,0,0.4,0,0.7c0,0.3,0,0.6,0,0.9c0,0.1,0,0.2,0,0.4c0,0.2,0,0.4,0,0.5 c0,0.1,0,0.3,0,0.4s0.1,0.3,0.1,0.4c0.1,0.1,0.1,0.2,0.2,0.3c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.3-0.1c0.1-0.1,0.2-0.2,0.4-0.4 s0.3-0.4,0.5-0.7c0.2-0.3,0.5-0.7,0.7-1.1c0.4-0.7,0.8-1.5,1.1-2.3c0-0.1,0.1-0.1,0.1-0.2c0-0.1,0.1-0.1,0.1-0.1l0,0l0.1,0 c0,0,0,0,0.1,0s0.2,0,0.2,0l3,0c0.3,0,0.5,0,0.7,0S21.9,7,21.9,7L22,7.1z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const WhatsAppIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M 12.011719 2 C 6.5057187 2 2.0234844 6.478375 2.0214844 11.984375 C 2.0204844 13.744375 2.4814687 15.462563 3.3554688 16.976562 L 2 22 L 7.2324219 20.763672 C 8.6914219 21.559672 10.333859 21.977516 12.005859 21.978516 L 12.009766 21.978516 C 17.514766 21.978516 21.995047 17.499141 21.998047 11.994141 C 22.000047 9.3251406 20.962172 6.8157344 19.076172 4.9277344 C 17.190172 3.0407344 14.683719 2.001 12.011719 2 z M 12.009766 4 C 14.145766 4.001 16.153109 4.8337969 17.662109 6.3417969 C 19.171109 7.8517969 20.000047 9.8581875 19.998047 11.992188 C 19.996047 16.396187 16.413812 19.978516 12.007812 19.978516 C 10.674812 19.977516 9.3544062 19.642812 8.1914062 19.007812 L 7.5175781 18.640625 L 6.7734375 18.816406 L 4.8046875 19.28125 L 5.2851562 17.496094 L 5.5019531 16.695312 L 5.0878906 15.976562 C 4.3898906 14.768562 4.0204844 13.387375 4.0214844 11.984375 C 4.0234844 7.582375 7.6067656 4 12.009766 4 z M 8.4765625 7.375 C 8.3095625 7.375 8.0395469 7.4375 7.8105469 7.6875 C 7.5815469 7.9365 6.9355469 8.5395781 6.9355469 9.7675781 C 6.9355469 10.995578 7.8300781 12.182609 7.9550781 12.349609 C 8.0790781 12.515609 9.68175 15.115234 12.21875 16.115234 C 14.32675 16.946234 14.754891 16.782234 15.212891 16.740234 C 15.670891 16.699234 16.690438 16.137687 16.898438 15.554688 C 17.106437 14.971687 17.106922 14.470187 17.044922 14.367188 C 16.982922 14.263188 16.816406 14.201172 16.566406 14.076172 C 16.317406 13.951172 15.090328 13.348625 14.861328 13.265625 C 14.632328 13.182625 14.464828 13.140625 14.298828 13.390625 C 14.132828 13.640625 13.655766 14.201187 13.509766 14.367188 C 13.363766 14.534188 13.21875 14.556641 12.96875 14.431641 C 12.71875 14.305641 11.914938 14.041406 10.960938 13.191406 C 10.218937 12.530406 9.7182656 11.714844 9.5722656 11.464844 C 9.4272656 11.215844 9.5585938 11.079078 9.6835938 10.955078 C 9.7955938 10.843078 9.9316406 10.663578 10.056641 10.517578 C 10.180641 10.371578 10.223641 10.267562 10.306641 10.101562 C 10.389641 9.9355625 10.347156 9.7890625 10.285156 9.6640625 C 10.223156 9.5390625 9.737625 8.3065 9.515625 7.8125 C 9.328625 7.3975 9.131125 7.3878594 8.953125 7.3808594 C 8.808125 7.3748594 8.6425625 7.375 8.4765625 7.375 z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const YelpIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M12.271,16.718v1.417q-.011,3.257-.067,3.4a.707.707,0,0,1-.569.446,4.637,4.637,0,0,1-2.024-.424A4.609,4.609,0,0,1,7.8,20.565a.844.844,0,0,1-.19-.4.692.692,0,0,1,.044-.29,3.181,3.181,0,0,1,.379-.524q.335-.412,2.019-2.409.011,0,.669-.781a.757.757,0,0,1,.44-.274.965.965,0,0,1,.552.039.945.945,0,0,1,.418.324.732.732,0,0,1,.139.468Zm-1.662-2.8a.783.783,0,0,1-.58.781l-1.339.435q-3.067.981-3.257.981a.711.711,0,0,1-.6-.4,2.636,2.636,0,0,1-.19-.836,9.134,9.134,0,0,1,.011-1.857,3.559,3.559,0,0,1,.335-1.389.659.659,0,0,1,.625-.357,22.629,22.629,0,0,1,2.253.859q.781.324,1.283.524l.937.379a.771.771,0,0,1,.4.34A.982.982,0,0,1,10.609,13.917Zm9.213,3.313a4.467,4.467,0,0,1-1.021,1.8,4.559,4.559,0,0,1-1.512,1.417.671.671,0,0,1-.7-.078q-.156-.112-2.052-3.2l-.524-.859a.761.761,0,0,1-.128-.513.957.957,0,0,1,.217-.513.774.774,0,0,1,.926-.29q.011.011,1.327.446,2.264.736,2.7.887a2.082,2.082,0,0,1,.524.229.673.673,0,0,1,.245.68Zm-7.5-7.049q.056,1.137-.6,1.361-.647.19-1.272-.792L6.237,4.08a.7.7,0,0,1,.212-.691,5.788,5.788,0,0,1,2.314-1,5.928,5.928,0,0,1,2.5-.352.681.681,0,0,1,.547.5q.034.2.245,3.407T12.327,10.181Zm7.384,1.2a.679.679,0,0,1-.29.658q-.167.112-3.67.959-.747.167-1.015.257l.011-.022a.769.769,0,0,1-.513-.044.914.914,0,0,1-.413-.357.786.786,0,0,1,0-.971q.011-.011.836-1.137,1.394-1.908,1.673-2.275a2.423,2.423,0,0,1,.379-.435A.7.7,0,0,1,17.435,8a4.482,4.482,0,0,1,1.372,1.489,4.81,4.81,0,0,1,.9,1.868v.034Z\" />\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport const YouTubeIcon = () => (\n\t<SVG width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\">\n\t\t<Path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\" />\n\t</SVG>\n);\n","/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tInspectorControls,\n\tURLPopover,\n\tURLInput,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { Fragment, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tPanelBody,\n\tPanelRow,\n\tTextControl,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { keyboardReturn } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getIconBySite, getNameBySite } from './social-list';\n\nconst SocialLinkURLPopover = ( {\n\turl,\n\tsetAttributes,\n\tsetPopover,\n\tpopoverAnchor,\n} ) => (\n\t<URLPopover anchor={ popoverAnchor } onClose={ () => setPopover( false ) }>\n\t\t<form\n\t\t\tclassName=\"block-editor-url-popover__link-editor\"\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetPopover( false );\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"block-editor-url-input\">\n\t\t\t\t<URLInput\n\t\t\t\t\tvalue={ url }\n\t\t\t\t\tonChange={ ( nextURL ) =>\n\t\t\t\t\t\tsetAttributes( { url: nextURL } )\n\t\t\t\t\t}\n\t\t\t\t\tplaceholder={ __( 'Enter address' ) }\n\t\t\t\t\tdisableSuggestions={ true }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<Button\n\t\t\t\ticon={ keyboardReturn }\n\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\ttype=\"submit\"\n\t\t\t/>\n\t\t</form>\n\t</URLPopover>\n);\n\nconst SocialLinkEdit = ( {\n\tattributes,\n\tcontext,\n\tisSelected,\n\tsetAttributes,\n} ) => {\n\tconst { url, service, label } = attributes;\n\tconst { showLabels, iconColorValue, iconBackgroundColorValue } = context;\n\tconst [ showURLPopover, setPopover ] = useState( false );\n\tconst classes = classNames( 'wp-social-link', 'wp-social-link-' + service, {\n\t\t'wp-social-link__is-incomplete': ! url,\n\t} );\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\n\tconst IconComponent = getIconBySite( service );\n\tconst socialLinkName = getNameBySite( service );\n\tconst socialLinkLabel = label ?? socialLinkName;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t\tstyle: {\n\t\t\tcolor: iconColorValue,\n\t\t\tbackgroundColor: iconBackgroundColorValue,\n\t\t},\n\t} );\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t/* translators: %s: name of the social service. */\n\t\t\t\t\t\t__( '%s label' ),\n\t\t\t\t\t\tsocialLinkName\n\t\t\t\t\t) }\n\t\t\t\t\tinitialOpen={ false }\n\t\t\t\t>\n\t\t\t\t\t<PanelRow>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tlabel={ __( 'Link label' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Briefly describe the link to help screen reader users.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { label: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<li { ...blockProps }>\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"wp-block-social-link-anchor\"\n\t\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\t\tonClick={ () => setPopover( true ) }\n\t\t\t\t>\n\t\t\t\t\t<IconComponent />\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ classNames( 'wp-block-social-link-label', {\n\t\t\t\t\t\t\t'screen-reader-text': ! showLabels,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ socialLinkLabel }\n\t\t\t\t\t</span>\n\t\t\t\t\t{ isSelected && showURLPopover && (\n\t\t\t\t\t\t<SocialLinkURLPopover\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tsetPopover={ setPopover }\n\t\t\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t</li>\n\t\t</Fragment>\n\t);\n};\n\nexport default SocialLinkEdit;\n","/**\n * WordPress dependencies\n */\nimport { share 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 variations from './variations';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tvariations,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport { find } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport variations from './variations';\nimport { ChainIcon } from './icons';\n\n/**\n * Retrieves the social service's icon component.\n *\n * @param {string} name key for a social service (lowercase slug)\n *\n * @return {WPComponent} Icon component for social service.\n */\nexport const getIconBySite = ( name ) => {\n\tconst variation = find( variations, { name } );\n\treturn variation ? variation.icon : ChainIcon;\n};\n\n/**\n * Retrieves the display name for the social service.\n *\n * @param {string} name key for a social service (lowercase slug)\n *\n * @return {string} Display name for social service\n */\nexport const getNameBySite = ( name ) => {\n\tconst variation = find( variations, { name } );\n\treturn variation ? variation.title : __( 'Social Icon' );\n};\n","/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { InnerBlocks, useBlockProps } from '@wordpress/block-editor';\n\n/**\n * The specific handling by `className` below is needed because `itemsJustification`\n * was introduced in https://github.com/WordPress/gutenberg/pull/28980/files and wasn't\n * declared in block.json.\n *\n * @param {Object} attributes Block's attributes.\n */\nconst migrateWithLayout = ( attributes ) => {\n\tif ( !! attributes.layout ) {\n\t\treturn attributes;\n\t}\n\tconst { className } = attributes;\n\t// Matches classes with `items-justified-` prefix.\n\tconst prefix = `items-justified-`;\n\tconst justifiedItemsRegex = new RegExp( `\\\\b${ prefix }[^ ]*[ ]?\\\\b`, 'g' );\n\tconst newAttributes = {\n\t\t...attributes,\n\t\tclassName: className?.replace( justifiedItemsRegex, '' ).trim(),\n\t};\n\t/**\n\t * Add `layout` prop only if `justifyContent` is defined, for backwards\n\t * compatibility. In other cases the block's default layout will be used.\n\t * Also noting that due to the missing attribute, it's possible for a block\n\t * to have more than one of `justified` classes.\n\t */\n\tconst justifyContent = className\n\t\t?.match( justifiedItemsRegex )?.[ 0 ]\n\t\t?.trim();\n\tif ( justifyContent ) {\n\t\tObject.assign( newAttributes, {\n\t\t\tlayout: {\n\t\t\t\ttype: 'flex',\n\t\t\t\tjustifyContent: justifyContent.slice( prefix.length ),\n\t\t\t},\n\t\t} );\n\t}\n\treturn newAttributes;\n};\n\n// Social Links block deprecations.\nconst deprecated = [\n\t// V1. Remove CSS variable use for colors.\n\t{\n\t\tattributes: {\n\t\t\ticonColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomIconColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ticonColorValue: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ticonBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcustomIconBackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\ticonBackgroundColorValue: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\topenInNewTab: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t\tprovidesContext: {\n\t\t\topenInNewTab: 'openInNewTab',\n\t\t},\n\t\tsupports: {\n\t\t\talign: [ 'left', 'center', 'right' ],\n\t\t\tanchor: true,\n\t\t},\n\t\tmigrate: migrateWithLayout,\n\t\tsave: ( props ) => {\n\t\t\tconst {\n\t\t\t\tattributes: {\n\t\t\t\t\ticonBackgroundColorValue,\n\t\t\t\t\ticonColorValue,\n\t\t\t\t\titemsJustification,\n\t\t\t\t\tsize,\n\t\t\t\t},\n\t\t\t} = props;\n\n\t\t\tconst className = classNames( size, {\n\t\t\t\t'has-icon-color': iconColorValue,\n\t\t\t\t'has-icon-background-color': iconBackgroundColorValue,\n\t\t\t\t[ `items-justified-${ itemsJustification }` ]:\n\t\t\t\t\titemsJustification,\n\t\t\t} );\n\n\t\t\tconst style = {\n\t\t\t\t'--wp--social-links--icon-color': iconColorValue,\n\t\t\t\t'--wp--social-links--icon-background-color':\n\t\t\t\t\ticonBackgroundColorValue,\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<ul { ...useBlockProps.save( { className, style } ) }>\n\t\t\t\t\t<InnerBlocks.Content />\n\t\t\t\t</ul>\n\t\t\t);\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst check = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z\" />\n\t</SVG>\n);\n\nexport default check;\n","/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tuseInnerBlocksProps,\n\tuseBlockProps,\n\tInspectorControls,\n\tContrastChecker,\n\twithColors,\n\t__experimentalColorGradientSettingsDropdown as ColorGradientSettingsDropdown,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n} from '@wordpress/block-editor';\nimport {\n\tMenuGroup,\n\tMenuItem,\n\tPanelBody,\n\tToggleControl,\n\tToolbarDropdownMenu,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { check } from '@wordpress/icons';\n\nconst ALLOWED_BLOCKS = [ 'core/social-link' ];\n\nconst sizeOptions = [\n\t{ name: __( 'Small' ), value: 'has-small-icon-size' },\n\t{ name: __( 'Normal' ), value: 'has-normal-icon-size' },\n\t{ name: __( 'Large' ), value: 'has-large-icon-size' },\n\t{ name: __( 'Huge' ), value: 'has-huge-icon-size' },\n];\n\nconst getDefaultBlockLayout = ( blockTypeOrName ) => {\n\tconst layoutBlockSupportConfig = getBlockSupport(\n\t\tblockTypeOrName,\n\t\t'__experimentalLayout'\n\t);\n\treturn layoutBlockSupportConfig?.default;\n};\n\nexport function SocialLinksEdit( props ) {\n\tconst {\n\t\tclientId,\n\t\tname,\n\t\tattributes,\n\t\ticonBackgroundColor,\n\t\ticonColor,\n\t\tisSelected,\n\t\tsetAttributes,\n\t\tsetIconBackgroundColor,\n\t\tsetIconColor,\n\t} = props;\n\n\tconst {\n\t\ticonBackgroundColorValue,\n\t\tcustomIconBackgroundColor,\n\t\ticonColorValue,\n\t\topenInNewTab,\n\t\tshowLabels,\n\t\tsize,\n\t\tlayout,\n\t} = attributes;\n\tconst usedLayout = layout || getDefaultBlockLayout( name );\n\n\tconst logosOnly = attributes.className?.includes( 'is-style-logos-only' );\n\n\t// Remove icon background color when logos only style is selected or\n\t// restore it when any other style is selected.\n\tconst backgroundBackup = useRef( {} );\n\tuseEffect( () => {\n\t\tif ( logosOnly ) {\n\t\t\tbackgroundBackup.current = {\n\t\t\t\ticonBackgroundColor,\n\t\t\t\ticonBackgroundColorValue,\n\t\t\t\tcustomIconBackgroundColor,\n\t\t\t};\n\t\t\tsetAttributes( {\n\t\t\t\ticonBackgroundColor: undefined,\n\t\t\t\tcustomIconBackgroundColor: undefined,\n\t\t\t\ticonBackgroundColorValue: undefined,\n\t\t\t} );\n\t\t} else {\n\t\t\tsetAttributes( { ...backgroundBackup.current } );\n\t\t}\n\t}, [ logosOnly ] );\n\n\tconst SocialPlaceholder = (\n\t\t<li className=\"wp-block-social-links__social-placeholder\">\n\t\t\t<div className=\"wp-block-social-links__social-placeholder-icons\">\n\t\t\t\t<div className=\"wp-social-link wp-social-link-twitter\"></div>\n\t\t\t\t<div className=\"wp-social-link wp-social-link-facebook\"></div>\n\t\t\t\t<div className=\"wp-social-link wp-social-link-instagram\"></div>\n\t\t\t</div>\n\t\t</li>\n\t);\n\n\tconst SelectedSocialPlaceholder = (\n\t\t<li className=\"wp-block-social-links__social-prompt\">\n\t\t\t{ __( 'Click plus to add' ) }\n\t\t</li>\n\t);\n\n\t// Fallback color values are used maintain selections in case switching\n\t// themes and named colors in palette do not match.\n\tconst className = classNames( size, {\n\t\t'has-visible-labels': showLabels,\n\t\t'has-icon-color': iconColor.color || iconColorValue,\n\t\t'has-icon-background-color':\n\t\t\ticonBackgroundColor.color || iconBackgroundColorValue,\n\t} );\n\n\tconst blockProps = useBlockProps( { className } );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\tplaceholder: isSelected ? SelectedSocialPlaceholder : SocialPlaceholder,\n\t\ttemplateLock: false,\n\t\t__experimentalAppenderTagName: 'li',\n\t\t__experimentalLayout: usedLayout,\n\t} );\n\n\tconst POPOVER_PROPS = {\n\t\tposition: 'bottom right',\n\t};\n\n\tconst colorSettings = [\n\t\t{\n\t\t\t// Use custom attribute as fallback to prevent loss of named color selection when\n\t\t\t// switching themes to a new theme that does not have a matching named color.\n\t\t\tvalue: iconColor.color || iconColorValue,\n\t\t\tonChange: ( colorValue ) => {\n\t\t\t\tsetIconColor( colorValue );\n\t\t\t\tsetAttributes( { iconColorValue: colorValue } );\n\t\t\t},\n\t\t\tlabel: __( 'Icon color' ),\n\t\t\tresetAllFilter: () => {\n\t\t\t\tsetIconColor( undefined );\n\t\t\t\tsetAttributes( { iconColorValue: undefined } );\n\t\t\t},\n\t\t},\n\t];\n\n\tif ( ! logosOnly ) {\n\t\tcolorSettings.push( {\n\t\t\t// Use custom attribute as fallback to prevent loss of named color selection when\n\t\t\t// switching themes to a new theme that does not have a matching named color.\n\t\t\tvalue: iconBackgroundColor.color || iconBackgroundColorValue,\n\t\t\tonChange: ( colorValue ) => {\n\t\t\t\tsetIconBackgroundColor( colorValue );\n\t\t\t\tsetAttributes( {\n\t\t\t\t\ticonBackgroundColorValue: colorValue,\n\t\t\t\t} );\n\t\t\t},\n\t\t\tlabel: __( 'Icon background' ),\n\t\t\tresetAllFilter: () => {\n\t\t\t\tsetIconBackgroundColor( undefined );\n\t\t\t\tsetAttributes( { iconBackgroundColorValue: undefined } );\n\t\t\t},\n\t\t} );\n\t}\n\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<ToolbarDropdownMenu\n\t\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\t\ttext={ __( 'Size' ) }\n\t\t\t\t\ticon={ null }\n\t\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t{ sizeOptions.map( ( entry ) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t( size === entry.value ||\n\t\t\t\t\t\t\t\t\t\t\t\t( ! size &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tentry.value ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'has-normal-icon-size' ) ) &&\n\t\t\t\t\t\t\t\t\t\t\tcheck\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tisSelected={ size === entry.value }\n\t\t\t\t\t\t\t\t\t\tkey={ entry.value }\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\t\t\tsize: entry.value,\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ entry.name }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t</ToolbarDropdownMenu>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Open links in new tab' ) }\n\t\t\t\t\t\tchecked={ openInNewTab }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { openInNewTab: ! openInNewTab } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Show labels' ) }\n\t\t\t\t\t\tchecked={ showLabels }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { showLabels: ! showLabels } )\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\t<InspectorControls __experimentalGroup=\"color\">\n\t\t\t\t{ colorSettings.map(\n\t\t\t\t\t( { onChange, label, value, resetAllFilter } ) => (\n\t\t\t\t\t\t<ColorGradientSettingsDropdown\n\t\t\t\t\t\t\tkey={ `social-links-color-${ label }` }\n\t\t\t\t\t\t\t__experimentalHasMultipleOrigins\n\t\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\t\tsettings={ [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcolorValue: value,\n\t\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t\t\tonColorChange: onChange,\n\t\t\t\t\t\t\t\t\tisShownByDefault: true,\n\t\t\t\t\t\t\t\t\tresetAllFilter,\n\t\t\t\t\t\t\t\t\tenableAlpha: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t\t\t\t{ ...colorGradientSettings }\n\t\t\t\t\t\t/>\n\t\t\t\t\t)\n\t\t\t\t) }\n\t\t\t\t{ ! logosOnly && (\n\t\t\t\t\t<ContrastChecker\n\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\ttextColor: iconColorValue,\n\t\t\t\t\t\t\tbackgroundColor: iconBackgroundColorValue,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisLargeText={ false }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t\t<ul { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n\nconst iconColorAttributes = {\n\ticonColor: 'icon-color',\n\ticonBackgroundColor: 'icon-background-color',\n};\n\nexport default withColors( iconColorAttributes )( SocialLinksEdit );\n","/**\n * WordPress dependencies\n */\nimport { share 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';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/social-link',\n\t\t\t\tattributes: {\n\t\t\t\t\tservice: 'wordpress',\n\t\t\t\t\turl: 'https://wordpress.org',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/social-link',\n\t\t\t\tattributes: {\n\t\t\t\t\tservice: 'facebook',\n\t\t\t\t\turl: 'https://www.facebook.com/WordPress/',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/social-link',\n\t\t\t\tattributes: {\n\t\t\t\t\tservice: 'twitter',\n\t\t\t\t\turl: 'https://twitter.com/WordPress',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\ticon,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( props ) {\n\tconst {\n\t\tattributes: {\n\t\t\ticonBackgroundColorValue,\n\t\t\ticonColorValue,\n\t\t\tshowLabels,\n\t\t\tsize,\n\t\t},\n\t} = props;\n\n\tconst className = classNames( size, {\n\t\t'has-visible-labels': showLabels,\n\t\t'has-icon-color': iconColorValue,\n\t\t'has-icon-background-color': iconBackgroundColorValue,\n\t} );\n\tconst blockProps = useBlockProps.save( { className } );\n\tconst innerBlocksProps = useInnerBlocksProps.save( blockProps );\n\n\treturn <ul { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst resizeCornerNE = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M12.5 4.2v1.6h4.7L5.8 17.2V12H4.2v7.8H12v-1.6H6.8L18.2 6.8v4.7h1.6V4.2z\" />\n\t</SVG>\n);\n\nexport default resizeCornerNE;\n","/**\n * WordPress dependencies\n */\nimport { useBlockProps } from '@wordpress/block-editor';\n\nconst deprecated = [\n\t{\n\t\tattributes: {\n\t\t\theight: {\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 100,\n\t\t\t},\n\t\t\twidth: {\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t},\n\t\tmigrate( attributes ) {\n\t\t\tconst { height, width } = attributes;\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\twidth: width !== undefined ? `${ width }px` : undefined,\n\t\t\t\theight: height !== undefined ? `${ height }px` : undefined,\n\t\t\t};\n\t\t},\n\t\tsave( { attributes } ) {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\t{ ...useBlockProps.save( {\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\theight: attributes.height,\n\t\t\t\t\t\t\twidth: attributes.width,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'aria-hidden': true,\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t);\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { InspectorControls, useSetting } from '@wordpress/block-editor';\nimport {\n\tBaseControl,\n\tPanelBody,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { MIN_SPACER_SIZE } from './constants';\n\nfunction DimensionInput( { label, onChange, isResizing, value = '' } ) {\n\tconst inputId = useInstanceId( UnitControl, 'block-spacer-height-input' );\n\n\t// In most contexts the spacer size cannot meaningfully be set to a\n\t// percentage, since this is relative to the parent container. This\n\t// unit is disabled from the UI.\n\tconst availableUnitSettings = (\n\t\tuseSetting( 'spacing.units' ) || undefined\n\t)?.filter( ( availableUnit ) => availableUnit !== '%' );\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnitSettings || [\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t\t'vw',\n\t\t\t'vh',\n\t\t],\n\t\tdefaultValues: { px: 100, em: 10, rem: 10, vw: 10, vh: 25 },\n\t} );\n\n\tconst handleOnChange = ( unprocessedValue ) => {\n\t\tonChange( unprocessedValue );\n\t};\n\n\t// Force the unit to update to `px` when the Spacer is being resized.\n\tconst [ parsedQuantity, parsedUnit ] =\n\t\tparseQuantityAndUnitFromRawValue( value );\n\tconst computedValue = [\n\t\tparsedQuantity,\n\t\tisResizing ? 'px' : parsedUnit,\n\t].join( '' );\n\n\treturn (\n\t\t<BaseControl label={ label } id={ inputId }>\n\t\t\t<UnitControl\n\t\t\t\tid={ inputId }\n\t\t\t\tisResetValueOnUnitChange\n\t\t\t\tmin={ MIN_SPACER_SIZE }\n\t\t\t\tonChange={ handleOnChange }\n\t\t\t\tstyle={ { maxWidth: 80 } }\n\t\t\t\tvalue={ computedValue }\n\t\t\t\tunits={ units }\n\t\t\t/>\n\t\t</BaseControl>\n\t);\n}\n\nexport default function SpacerControls( {\n\tsetAttributes,\n\torientation,\n\theight,\n\twidth,\n\tisResizing,\n} ) {\n\treturn (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t{ orientation === 'horizontal' && (\n\t\t\t\t\t<DimensionInput\n\t\t\t\t\t\tlabel={ __( 'Width' ) }\n\t\t\t\t\t\tvalue={ width }\n\t\t\t\t\t\tonChange={ ( nextWidth ) =>\n\t\t\t\t\t\t\tsetAttributes( { width: nextWidth } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisResizing={ isResizing }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ orientation !== 'horizontal' && (\n\t\t\t\t\t<DimensionInput\n\t\t\t\t\t\tlabel={ __( 'Height' ) }\n\t\t\t\t\t\tvalue={ height }\n\t\t\t\t\t\tonChange={ ( nextHeight ) =>\n\t\t\t\t\t\t\tsetAttributes( { height: nextHeight } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisResizing={ isResizing }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n}\n","export const MIN_SPACER_SIZE = 0;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useBlockProps } from '@wordpress/block-editor';\nimport { ResizableBox } from '@wordpress/components';\nimport { useState, useEffect } from '@wordpress/element';\nimport { View } from '@wordpress/primitives';\n\n/**\n * Internal dependencies\n */\nimport SpacerControls from './controls';\nimport { MIN_SPACER_SIZE } from './constants';\n\nconst ResizableSpacer = ( {\n\torientation,\n\tonResizeStart,\n\tonResize,\n\tonResizeStop,\n\tisSelected,\n\tisResizing,\n\tsetIsResizing,\n\t...props\n} ) => {\n\tconst getCurrentSize = ( elt ) => {\n\t\treturn orientation === 'horizontal'\n\t\t\t? elt.clientWidth\n\t\t\t: elt.clientHeight;\n\t};\n\n\tconst getNextVal = ( elt ) => {\n\t\treturn `${ getCurrentSize( elt ) }px`;\n\t};\n\n\treturn (\n\t\t<ResizableBox\n\t\t\tclassName={ classnames( 'block-library-spacer__resize-container', {\n\t\t\t\t'resize-horizontal': orientation === 'horizontal',\n\t\t\t\t'is-resizing': isResizing,\n\t\t\t\t'is-selected': isSelected,\n\t\t\t} ) }\n\t\t\tonResizeStart={ ( _event, _direction, elt ) => {\n\t\t\t\tconst nextVal = getNextVal( elt );\n\t\t\t\tonResizeStart( nextVal );\n\t\t\t\tonResize( nextVal );\n\t\t\t} }\n\t\t\tonResize={ ( _event, _direction, elt ) => {\n\t\t\t\tonResize( getNextVal( elt ) );\n\t\t\t\tif ( ! isResizing ) {\n\t\t\t\t\tsetIsResizing( true );\n\t\t\t\t}\n\t\t\t} }\n\t\t\tonResizeStop={ ( _event, _direction, elt ) => {\n\t\t\t\tconst nextVal = getCurrentSize( elt );\n\t\t\t\tonResizeStop( `${ nextVal }px` );\n\t\t\t\tsetIsResizing( false );\n\t\t\t} }\n\t\t\t__experimentalShowTooltip={ true }\n\t\t\t__experimentalTooltipProps={ {\n\t\t\t\taxis: orientation === 'horizontal' ? 'x' : 'y',\n\t\t\t\tposition: 'corner',\n\t\t\t\tisVisible: isResizing,\n\t\t\t} }\n\t\t\tshowHandle={ isSelected }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n};\n\nconst SpacerEdit = ( {\n\tattributes,\n\tisSelected,\n\tsetAttributes,\n\ttoggleSelection,\n\tcontext,\n} ) => {\n\tconst { orientation } = context;\n\tconst { height, width } = attributes;\n\n\tconst [ isResizing, setIsResizing ] = useState( false );\n\tconst [ temporaryHeight, setTemporaryHeight ] = useState( null );\n\tconst [ temporaryWidth, setTemporaryWidth ] = useState( null );\n\n\tconst onResizeStart = () => toggleSelection( false );\n\tconst onResizeStop = () => toggleSelection( true );\n\n\tconst handleOnVerticalResizeStop = ( newHeight ) => {\n\t\tonResizeStop();\n\n\t\tsetAttributes( { height: newHeight } );\n\t\tsetTemporaryHeight( null );\n\t};\n\n\tconst handleOnHorizontalResizeStop = ( newWidth ) => {\n\t\tonResizeStop();\n\t\tsetAttributes( { width: newWidth } );\n\t\tsetTemporaryWidth( null );\n\t};\n\n\tconst style = {\n\t\theight:\n\t\t\torientation === 'horizontal'\n\t\t\t\t? 24\n\t\t\t\t: temporaryHeight || height || undefined,\n\t\twidth:\n\t\t\torientation === 'horizontal'\n\t\t\t\t? temporaryWidth || width || undefined\n\t\t\t\t: undefined,\n\t};\n\n\tconst resizableBoxWithOrientation = ( blockOrientation ) => {\n\t\tif ( blockOrientation === 'horizontal' ) {\n\t\t\treturn (\n\t\t\t\t<ResizableSpacer\n\t\t\t\t\tminWidth={ MIN_SPACER_SIZE }\n\t\t\t\t\tenable={ {\n\t\t\t\t\t\ttop: false,\n\t\t\t\t\t\tright: true,\n\t\t\t\t\t\tbottom: false,\n\t\t\t\t\t\tleft: false,\n\t\t\t\t\t\ttopRight: false,\n\t\t\t\t\t\tbottomRight: false,\n\t\t\t\t\t\tbottomLeft: false,\n\t\t\t\t\t\ttopLeft: false,\n\t\t\t\t\t} }\n\t\t\t\t\torientation={ blockOrientation }\n\t\t\t\t\tonResizeStart={ onResizeStart }\n\t\t\t\t\tonResize={ setTemporaryWidth }\n\t\t\t\t\tonResizeStop={ handleOnHorizontalResizeStop }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tisResizing={ isResizing }\n\t\t\t\t\tsetIsResizing={ setIsResizing }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<ResizableSpacer\n\t\t\t\t\tminHeight={ MIN_SPACER_SIZE }\n\t\t\t\t\tenable={ {\n\t\t\t\t\t\ttop: false,\n\t\t\t\t\t\tright: false,\n\t\t\t\t\t\tbottom: true,\n\t\t\t\t\t\tleft: false,\n\t\t\t\t\t\ttopRight: false,\n\t\t\t\t\t\tbottomRight: false,\n\t\t\t\t\t\tbottomLeft: false,\n\t\t\t\t\t\ttopLeft: false,\n\t\t\t\t\t} }\n\t\t\t\t\torientation={ blockOrientation }\n\t\t\t\t\tonResizeStart={ onResizeStart }\n\t\t\t\t\tonResize={ setTemporaryHeight }\n\t\t\t\t\tonResizeStop={ handleOnVerticalResizeStop }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tisResizing={ isResizing }\n\t\t\t\t\tsetIsResizing={ setIsResizing }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t};\n\n\tuseEffect( () => {\n\t\tif ( orientation === 'horizontal' && ! width ) {\n\t\t\tsetAttributes( {\n\t\t\t\theight: '0px',\n\t\t\t\twidth: '72px',\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t<View { ...useBlockProps( { style } ) }>\n\t\t\t\t{ resizableBoxWithOrientation( orientation ) }\n\t\t\t</View>\n\t\t\t<SpacerControls\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\theight={ temporaryHeight || height }\n\t\t\t\twidth={ temporaryWidth || width }\n\t\t\t\torientation={ orientation }\n\t\t\t\tisResizing={ isResizing }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default SpacerEdit;\n","/**\n * WordPress dependencies\n */\nimport { resizeCornerNE 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';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport { useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes: { height, width } } ) {\n\treturn (\n\t\t<div\n\t\t\t{ ...useBlockProps.save( {\n\t\t\t\tstyle: {\n\t\t\t\t\theight,\n\t\t\t\t\twidth,\n\t\t\t\t},\n\t\t\t\t'aria-hidden': true,\n\t\t\t} ) }\n\t\t/>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst blockTable = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z\" />\n\t</SVG>\n);\n\nexport default blockTable;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tgetColorClassName,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\nconst supports = {\n\talign: true,\n};\n\n// As the previous arbitrary colors won't match theme color palettes, the hex\n// value will be mapped to the style.color.background attribute as if it was\n// a custom color selection.\nconst oldColors = {\n\t'subtle-light-gray': '#f3f4f5',\n\t'subtle-pale-green': '#e9fbe5',\n\t'subtle-pale-blue': '#e7f5fe',\n\t'subtle-pale-pink': '#fcf0ef',\n};\n\nconst deprecated = [\n\t// Deprecation migrating table block to use colors block support feature.\n\t{\n\t\tattributes: {\n\t\t\thasFixedLayout: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\tcaption: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'html',\n\t\t\t\tselector: 'figcaption',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\thead: {\n\t\t\t\ttype: 'array',\n\t\t\t\tdefault: [],\n\t\t\t\tsource: 'query',\n\t\t\t\tselector: 'thead tr',\n\t\t\t\tquery: {\n\t\t\t\t\tcells: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t\tsource: 'query',\n\t\t\t\t\t\tselector: 'td,th',\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'html',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttag: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: 'td',\n\t\t\t\t\t\t\t\tsource: 'tag',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscope: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\t\t\tattribute: 'scope',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\talign: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\t\t\tattribute: 'data-align',\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\tbody: {\n\t\t\t\ttype: 'array',\n\t\t\t\tdefault: [],\n\t\t\t\tsource: 'query',\n\t\t\t\tselector: 'tbody tr',\n\t\t\t\tquery: {\n\t\t\t\t\tcells: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t\tsource: 'query',\n\t\t\t\t\t\tselector: 'td,th',\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'html',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttag: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: 'td',\n\t\t\t\t\t\t\t\tsource: 'tag',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscope: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\t\t\tattribute: 'scope',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\talign: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\t\t\tattribute: 'data-align',\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\tfoot: {\n\t\t\t\ttype: 'array',\n\t\t\t\tdefault: [],\n\t\t\t\tsource: 'query',\n\t\t\t\tselector: 'tfoot tr',\n\t\t\t\tquery: {\n\t\t\t\t\tcells: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t\tsource: 'query',\n\t\t\t\t\t\tselector: 'td,th',\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'html',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttag: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: 'td',\n\t\t\t\t\t\t\t\tsource: 'tag',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscope: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\t\t\tattribute: 'scope',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\talign: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\t\t\tattribute: 'data-align',\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\tsupports: {\n\t\t\tanchor: true,\n\t\t\talign: true,\n\t\t\t__experimentalSelector: '.wp-block-table > table',\n\t\t},\n\t\tsave: ( { attributes } ) => {\n\t\t\tconst {\n\t\t\t\thasFixedLayout,\n\t\t\t\thead,\n\t\t\t\tbody,\n\t\t\t\tfoot,\n\t\t\t\tbackgroundColor,\n\t\t\t\tcaption,\n\t\t\t} = attributes;\n\t\t\tconst isEmpty = ! head.length && ! body.length && ! foot.length;\n\n\t\t\tif ( isEmpty ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\n\t\t\tconst classes = classnames( backgroundClass, {\n\t\t\t\t'has-fixed-layout': hasFixedLayout,\n\t\t\t\t'has-background': !! backgroundClass,\n\t\t\t} );\n\n\t\t\tconst hasCaption = ! RichText.isEmpty( caption );\n\n\t\t\tconst Section = ( { type, rows } ) => {\n\t\t\t\tif ( ! rows.length ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst Tag = `t${ type }`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Tag>\n\t\t\t\t\t\t{ rows.map( ( { cells }, rowIndex ) => (\n\t\t\t\t\t\t\t<tr key={ rowIndex }>\n\t\t\t\t\t\t\t\t{ cells.map(\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t{ content, tag, scope, align },\n\t\t\t\t\t\t\t\t\t\tcellIndex\n\t\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\t\tconst cellClasses = classnames( {\n\t\t\t\t\t\t\t\t\t\t\t[ `has-text-align-${ align }` ]:\n\t\t\t\t\t\t\t\t\t\t\t\talign,\n\t\t\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t\t\t\tcellClasses\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? cellClasses\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tdata-align={ align }\n\t\t\t\t\t\t\t\t\t\t\t\ttagName={ tag }\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={ content }\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ cellIndex }\n\t\t\t\t\t\t\t\t\t\t\t\tscope={\n\t\t\t\t\t\t\t\t\t\t\t\t\ttag === 'th'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? scope\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t);\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</tr>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Tag>\n\t\t\t\t);\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<figure { ...useBlockProps.save() }>\n\t\t\t\t\t<table className={ classes === '' ? undefined : classes }>\n\t\t\t\t\t\t<Section type=\"head\" rows={ head } />\n\t\t\t\t\t\t<Section type=\"body\" rows={ body } />\n\t\t\t\t\t\t<Section type=\"foot\" rows={ foot } />\n\t\t\t\t\t</table>\n\t\t\t\t\t{ hasCaption && (\n\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</figure>\n\t\t\t);\n\t\t},\n\t\tisEligible: ( attributes ) => {\n\t\t\treturn (\n\t\t\t\tattributes.backgroundColor &&\n\t\t\t\tattributes.backgroundColor in oldColors &&\n\t\t\t\t! attributes.style\n\t\t\t);\n\t\t},\n\n\t\t// This version is the first to introduce the style attribute to the\n\t\t// table block. As a result, we'll explicitly override that.\n\t\tmigrate: ( attributes ) => {\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\tbackgroundColor: undefined,\n\t\t\t\tstyle: {\n\t\t\t\t\tcolor: {\n\t\t\t\t\t\tbackground: oldColors[ attributes.backgroundColor ],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t},\n\t{\n\t\tattributes: {\n\t\t\thasFixedLayout: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\thead: {\n\t\t\t\ttype: 'array',\n\t\t\t\tdefault: [],\n\t\t\t\tsource: 'query',\n\t\t\t\tselector: 'thead tr',\n\t\t\t\tquery: {\n\t\t\t\t\tcells: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t\tsource: 'query',\n\t\t\t\t\t\tselector: 'td,th',\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'html',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttag: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: 'td',\n\t\t\t\t\t\t\t\tsource: 'tag',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscope: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\t\t\tattribute: 'scope',\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\tbody: {\n\t\t\t\ttype: 'array',\n\t\t\t\tdefault: [],\n\t\t\t\tsource: 'query',\n\t\t\t\tselector: 'tbody tr',\n\t\t\t\tquery: {\n\t\t\t\t\tcells: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t\tsource: 'query',\n\t\t\t\t\t\tselector: 'td,th',\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'html',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttag: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: 'td',\n\t\t\t\t\t\t\t\tsource: 'tag',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscope: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\t\t\tattribute: 'scope',\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\tfoot: {\n\t\t\t\ttype: 'array',\n\t\t\t\tdefault: [],\n\t\t\t\tsource: 'query',\n\t\t\t\tselector: 'tfoot tr',\n\t\t\t\tquery: {\n\t\t\t\t\tcells: {\n\t\t\t\t\t\ttype: 'array',\n\t\t\t\t\t\tdefault: [],\n\t\t\t\t\t\tsource: 'query',\n\t\t\t\t\t\tselector: 'td,th',\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'html',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttag: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: 'td',\n\t\t\t\t\t\t\t\tsource: 'tag',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tscope: {\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tsource: 'attribute',\n\t\t\t\t\t\t\t\tattribute: 'scope',\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\tsupports,\n\t\tsave( { attributes } ) {\n\t\t\tconst { hasFixedLayout, head, body, foot, backgroundColor } =\n\t\t\t\tattributes;\n\t\t\tconst isEmpty = ! head.length && ! body.length && ! foot.length;\n\n\t\t\tif ( isEmpty ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst backgroundClass = getColorClassName(\n\t\t\t\t'background-color',\n\t\t\t\tbackgroundColor\n\t\t\t);\n\n\t\t\tconst classes = classnames( backgroundClass, {\n\t\t\t\t'has-fixed-layout': hasFixedLayout,\n\t\t\t\t'has-background': !! backgroundClass,\n\t\t\t} );\n\n\t\t\tconst Section = ( { type, rows } ) => {\n\t\t\t\tif ( ! rows.length ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst Tag = `t${ type }`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Tag>\n\t\t\t\t\t\t{ rows.map( ( { cells }, rowIndex ) => (\n\t\t\t\t\t\t\t<tr key={ rowIndex }>\n\t\t\t\t\t\t\t\t{ cells.map(\n\t\t\t\t\t\t\t\t\t( { content, tag, scope }, cellIndex ) => (\n\t\t\t\t\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\t\t\t\t\ttagName={ tag }\n\t\t\t\t\t\t\t\t\t\t\tvalue={ content }\n\t\t\t\t\t\t\t\t\t\t\tkey={ cellIndex }\n\t\t\t\t\t\t\t\t\t\t\tscope={\n\t\t\t\t\t\t\t\t\t\t\t\ttag === 'th' ? scope : undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Tag>\n\t\t\t\t);\n\t\t\t};\n\n\t\t\treturn (\n\t\t\t\t<table className={ classes }>\n\t\t\t\t\t<Section type=\"head\" rows={ head } />\n\t\t\t\t\t<Section type=\"body\" rows={ body } />\n\t\t\t\t\t<Section type=\"foot\" rows={ foot } />\n\t\t\t\t</table>\n\t\t\t);\n\t\t},\n\t},\n];\n\nexport default deprecated;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst alignLeft = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 19.8h8.9v-1.5H4v1.5zm8.9-15.6H4v1.5h8.9V4.2zm-8.9 7v1.5h16v-1.5H4z\" />\n\t</SVG>\n);\n\nexport default alignLeft;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst alignCenter = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M16.4 4.2H7.6v1.5h8.9V4.2zM4 11.2v1.5h16v-1.5H4zm3.6 8.6h8.9v-1.5H7.6v1.5z\" />\n\t</SVG>\n);\n\nexport default alignCenter;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst alignRight = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M11.1 19.8H20v-1.5h-8.9v1.5zm0-15.6v1.5H20V4.2h-8.9zM4 12.8h16v-1.5H4v1.5z\" />\n\t</SVG>\n);\n\nexport default alignRight;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst tableRowBefore = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t\t<Path d=\"M6.656 6.464h2.88v2.88h1.408v-2.88h2.88V5.12h-2.88V2.24H9.536v2.88h-2.88zM0 17.92V0h20.48v17.92H0zm7.68-2.56h5.12v-3.84H7.68v3.84zm-6.4 0H6.4v-3.84H1.28v3.84zM19.2 1.28H1.28v9.024H19.2V1.28zm0 10.24h-5.12v3.84h5.12v-3.84zM6.656 6.464h2.88v2.88h1.408v-2.88h2.88V5.12h-2.88V2.24H9.536v2.88h-2.88zM0 17.92V0h20.48v17.92H0zm7.68-2.56h5.12v-3.84H7.68v3.84zm-6.4 0H6.4v-3.84H1.28v3.84zM19.2 1.28H1.28v9.024H19.2V1.28zm0 10.24h-5.12v3.84h5.12v-3.84z\" />\n\t</SVG>\n);\n\nexport default tableRowBefore;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst tableRowAfter = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t\t<Path d=\"M13.824 10.176h-2.88v-2.88H9.536v2.88h-2.88v1.344h2.88v2.88h1.408v-2.88h2.88zM0 17.92V0h20.48v17.92H0zM6.4 1.28H1.28v3.84H6.4V1.28zm6.4 0H7.68v3.84h5.12V1.28zm6.4 0h-5.12v3.84h5.12V1.28zm0 5.056H1.28v9.024H19.2V6.336z\" />\n\t</SVG>\n);\n\nexport default tableRowAfter;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst tableRowDelete = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t\t<Path d=\"M17.728 11.456L14.592 8.32l3.2-3.2-1.536-1.536-3.2 3.2L9.92 3.648 8.384 5.12l3.2 3.2-3.264 3.264 1.536 1.536 3.264-3.264 3.136 3.136 1.472-1.536zM0 17.92V0h20.48v17.92H0zm19.2-6.4h-.448l-1.28-1.28H19.2V6.4h-1.792l1.28-1.28h.512V1.28H1.28v3.84h6.208l1.28 1.28H1.28v3.84h7.424l-1.28 1.28H1.28v3.84H19.2v-3.84z\" />\n\t</SVG>\n);\n\nexport default tableRowDelete;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst tableColumnBefore = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t\t<Path d=\"M6.4 3.776v3.648H2.752v1.792H6.4v3.648h1.728V9.216h3.712V7.424H8.128V3.776zM0 17.92V0h20.48v17.92H0zM12.8 1.28H1.28v14.08H12.8V1.28zm6.4 0h-5.12v3.84h5.12V1.28zm0 5.12h-5.12v3.84h5.12V6.4zm0 5.12h-5.12v3.84h5.12v-3.84z\" />\n\t</SVG>\n);\n\nexport default tableColumnBefore;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst tableColumnAfter = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t\t<Path d=\"M14.08 12.864V9.216h3.648V7.424H14.08V3.776h-1.728v3.648H8.64v1.792h3.712v3.648zM0 17.92V0h20.48v17.92H0zM6.4 1.28H1.28v3.84H6.4V1.28zm0 5.12H1.28v3.84H6.4V6.4zm0 5.12H1.28v3.84H6.4v-3.84zM19.2 1.28H7.68v14.08H19.2V1.28z\" />\n\t</SVG>\n);\n\nexport default tableColumnAfter;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst tableColumnDelete = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t\t<Path d=\"M6.4 9.98L7.68 8.7v-.256L6.4 7.164V9.98zm6.4-1.532l1.28-1.28V9.92L12.8 8.64v-.192zm7.68 9.472V0H0v17.92h20.48zm-1.28-2.56h-5.12v-1.024l-.256.256-1.024-1.024v1.792H7.68v-1.792l-1.024 1.024-.256-.256v1.024H1.28V1.28H6.4v2.368l.704-.704.576.576V1.216h5.12V3.52l.96-.96.32.32V1.216h5.12V15.36zm-5.76-2.112l-3.136-3.136-3.264 3.264-1.536-1.536 3.264-3.264L5.632 5.44l1.536-1.536 3.136 3.136 3.2-3.2 1.536 1.536-3.2 3.2 3.136 3.136-1.536 1.536z\" />\n\t</SVG>\n);\n\nexport default tableColumnDelete;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst table = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M4 6v11.5h16V6H4zm1.5 1.5h6V11h-6V7.5zm0 8.5v-3.5h6V16h-6zm13 0H13v-3.5h5.5V16zM13 11V7.5h5.5V11H13z\" />\n\t</SVG>\n);\n\nexport default table;\n","/**\n * External dependencies\n */\nimport { get, mapValues, every, pick } from 'lodash';\n\nconst INHERITED_COLUMN_ATTRIBUTES = [ 'align' ];\n\n/**\n * Creates a table state.\n *\n * @param {Object} options\n * @param {number} options.rowCount    Row count for the table to create.\n * @param {number} options.columnCount Column count for the table to create.\n *\n * @return {Object} New table state.\n */\nexport function createTable( { rowCount, columnCount } ) {\n\treturn {\n\t\tbody: Array.from( { length: rowCount } ).map( () => ( {\n\t\t\tcells: Array.from( { length: columnCount } ).map( () => ( {\n\t\t\t\tcontent: '',\n\t\t\t\ttag: 'td',\n\t\t\t} ) ),\n\t\t} ) ),\n\t};\n}\n\n/**\n * Returns the first row in the table.\n *\n * @param {Object} state Current table state.\n *\n * @return {Object} The first table row.\n */\nexport function getFirstRow( state ) {\n\tif ( ! isEmptyTableSection( state.head ) ) {\n\t\treturn state.head[ 0 ];\n\t}\n\tif ( ! isEmptyTableSection( state.body ) ) {\n\t\treturn state.body[ 0 ];\n\t}\n\tif ( ! isEmptyTableSection( state.foot ) ) {\n\t\treturn state.foot[ 0 ];\n\t}\n}\n\n/**\n * Gets an attribute for a cell.\n *\n * @param {Object} state         Current table state.\n * @param {Object} cellLocation  The location of the cell\n * @param {string} attributeName The name of the attribute to get the value of.\n *\n * @return {*} The attribute value.\n */\nexport function getCellAttribute( state, cellLocation, attributeName ) {\n\tconst { sectionName, rowIndex, columnIndex } = cellLocation;\n\treturn get( state, [\n\t\tsectionName,\n\t\trowIndex,\n\t\t'cells',\n\t\tcolumnIndex,\n\t\tattributeName,\n\t] );\n}\n\n/**\n * Returns updated cell attributes after applying the `updateCell` function to the selection.\n *\n * @param {Object}   state      The block attributes.\n * @param {Object}   selection  The selection of cells to update.\n * @param {Function} updateCell A function to update the selected cell attributes.\n *\n * @return {Object} New table state including the updated cells.\n */\nexport function updateSelectedCell( state, selection, updateCell ) {\n\tif ( ! selection ) {\n\t\treturn state;\n\t}\n\n\tconst tableSections = pick( state, [ 'head', 'body', 'foot' ] );\n\tconst { sectionName: selectionSectionName, rowIndex: selectionRowIndex } =\n\t\tselection;\n\n\treturn mapValues( tableSections, ( section, sectionName ) => {\n\t\tif ( selectionSectionName && selectionSectionName !== sectionName ) {\n\t\t\treturn section;\n\t\t}\n\n\t\treturn section.map( ( row, rowIndex ) => {\n\t\t\tif ( selectionRowIndex && selectionRowIndex !== rowIndex ) {\n\t\t\t\treturn row;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcells: row.cells.map( ( cellAttributes, columnIndex ) => {\n\t\t\t\t\tconst cellLocation = {\n\t\t\t\t\t\tsectionName,\n\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\trowIndex,\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( ! isCellSelected( cellLocation, selection ) ) {\n\t\t\t\t\t\treturn cellAttributes;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn updateCell( cellAttributes );\n\t\t\t\t} ),\n\t\t\t};\n\t\t} );\n\t} );\n}\n\n/**\n * Returns whether the cell at `cellLocation` is included in the selection `selection`.\n *\n * @param {Object} cellLocation An object containing cell location properties.\n * @param {Object} selection    An object containing selection properties.\n *\n * @return {boolean} True if the cell is selected, false otherwise.\n */\nexport function isCellSelected( cellLocation, selection ) {\n\tif ( ! cellLocation || ! selection ) {\n\t\treturn false;\n\t}\n\n\tswitch ( selection.type ) {\n\t\tcase 'column':\n\t\t\treturn (\n\t\t\t\tselection.type === 'column' &&\n\t\t\t\tcellLocation.columnIndex === selection.columnIndex\n\t\t\t);\n\t\tcase 'cell':\n\t\t\treturn (\n\t\t\t\tselection.type === 'cell' &&\n\t\t\t\tcellLocation.sectionName === selection.sectionName &&\n\t\t\t\tcellLocation.columnIndex === selection.columnIndex &&\n\t\t\t\tcellLocation.rowIndex === selection.rowIndex\n\t\t\t);\n\t}\n}\n\n/**\n * Inserts a row in the table state.\n *\n * @param {Object} state               Current table state.\n * @param {Object} options\n * @param {string} options.sectionName Section in which to insert the row.\n * @param {number} options.rowIndex    Row index at which to insert the row.\n * @param {number} options.columnCount Column count for the table to create.\n *\n * @return {Object} New table state.\n */\nexport function insertRow( state, { sectionName, rowIndex, columnCount } ) {\n\tconst firstRow = getFirstRow( state );\n\tconst cellCount =\n\t\tcolumnCount === undefined\n\t\t\t? get( firstRow, [ 'cells', 'length' ] )\n\t\t\t: columnCount;\n\n\t// Bail early if the function cannot determine how many cells to add.\n\tif ( ! cellCount ) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\t[ sectionName ]: [\n\t\t\t...state[ sectionName ].slice( 0, rowIndex ),\n\t\t\t{\n\t\t\t\tcells: Array.from( { length: cellCount } ).map(\n\t\t\t\t\t( _, index ) => {\n\t\t\t\t\t\tconst firstCellInColumn = get(\n\t\t\t\t\t\t\tfirstRow,\n\t\t\t\t\t\t\t[ 'cells', index ],\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst inheritedAttributes = pick(\n\t\t\t\t\t\t\tfirstCellInColumn,\n\t\t\t\t\t\t\tINHERITED_COLUMN_ATTRIBUTES\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...inheritedAttributes,\n\t\t\t\t\t\t\tcontent: '',\n\t\t\t\t\t\t\ttag: sectionName === 'head' ? 'th' : 'td',\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\t...state[ sectionName ].slice( rowIndex ),\n\t\t],\n\t};\n}\n\n/**\n * Deletes a row from the table state.\n *\n * @param {Object} state               Current table state.\n * @param {Object} options\n * @param {string} options.sectionName Section in which to delete the row.\n * @param {number} options.rowIndex    Row index to delete.\n *\n * @return {Object} New table state.\n */\nexport function deleteRow( state, { sectionName, rowIndex } ) {\n\treturn {\n\t\t[ sectionName ]: state[ sectionName ].filter(\n\t\t\t( row, index ) => index !== rowIndex\n\t\t),\n\t};\n}\n\n/**\n * Inserts a column in the table state.\n *\n * @param {Object} state               Current table state.\n * @param {Object} options\n * @param {number} options.columnIndex Column index at which to insert the column.\n *\n * @return {Object} New table state.\n */\nexport function insertColumn( state, { columnIndex } ) {\n\tconst tableSections = pick( state, [ 'head', 'body', 'foot' ] );\n\n\treturn mapValues( tableSections, ( section, sectionName ) => {\n\t\t// Bail early if the table section is empty.\n\t\tif ( isEmptyTableSection( section ) ) {\n\t\t\treturn section;\n\t\t}\n\n\t\treturn section.map( ( row ) => {\n\t\t\t// Bail early if the row is empty or it's an attempt to insert past\n\t\t\t// the last possible index of the array.\n\t\t\tif ( isEmptyRow( row ) || row.cells.length < columnIndex ) {\n\t\t\t\treturn row;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcells: [\n\t\t\t\t\t...row.cells.slice( 0, columnIndex ),\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: '',\n\t\t\t\t\t\ttag: sectionName === 'head' ? 'th' : 'td',\n\t\t\t\t\t},\n\t\t\t\t\t...row.cells.slice( columnIndex ),\n\t\t\t\t],\n\t\t\t};\n\t\t} );\n\t} );\n}\n\n/**\n * Deletes a column from the table state.\n *\n * @param {Object} state               Current table state.\n * @param {Object} options\n * @param {number} options.columnIndex Column index to delete.\n *\n * @return {Object} New table state.\n */\nexport function deleteColumn( state, { columnIndex } ) {\n\tconst tableSections = pick( state, [ 'head', 'body', 'foot' ] );\n\n\treturn mapValues( tableSections, ( section ) => {\n\t\t// Bail early if the table section is empty.\n\t\tif ( isEmptyTableSection( section ) ) {\n\t\t\treturn section;\n\t\t}\n\n\t\treturn section\n\t\t\t.map( ( row ) => ( {\n\t\t\t\tcells:\n\t\t\t\t\trow.cells.length >= columnIndex\n\t\t\t\t\t\t? row.cells.filter(\n\t\t\t\t\t\t\t\t( cell, index ) => index !== columnIndex\n\t\t\t\t\t\t  )\n\t\t\t\t\t\t: row.cells,\n\t\t\t} ) )\n\t\t\t.filter( ( row ) => row.cells.length );\n\t} );\n}\n\n/**\n * Toggles the existance of a section.\n *\n * @param {Object} state       Current table state.\n * @param {string} sectionName Name of the section to toggle.\n *\n * @return {Object} New table state.\n */\nexport function toggleSection( state, sectionName ) {\n\t// Section exists, replace it with an empty row to remove it.\n\tif ( ! isEmptyTableSection( state[ sectionName ] ) ) {\n\t\treturn { [ sectionName ]: [] };\n\t}\n\n\t// Get the length of the first row of the body to use when creating the header.\n\tconst columnCount = get( state, [ 'body', 0, 'cells', 'length' ], 1 );\n\n\t// Section doesn't exist, insert an empty row to create the section.\n\treturn insertRow( state, { sectionName, rowIndex: 0, columnCount } );\n}\n\n/**\n * Determines whether a table section is empty.\n *\n * @param {Object} section Table section state.\n *\n * @return {boolean} True if the table section is empty, false otherwise.\n */\nexport function isEmptyTableSection( section ) {\n\treturn ! section || ! section.length || every( section, isEmptyRow );\n}\n\n/**\n * Determines whether a table row is empty.\n *\n * @param {Object} row Table row state.\n *\n * @return {boolean} True if the table section is empty, false otherwise.\n */\nexport function isEmptyRow( row ) {\n\treturn ! ( row.cells && row.cells.length );\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport {\n\tInspectorControls,\n\tBlockControls,\n\tRichText,\n\tBlockIcon,\n\tAlignmentControl,\n\tuseBlockProps,\n\t__experimentalUseColorProps as useColorProps,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tPanelBody,\n\tPlaceholder,\n\tTextControl,\n\tToggleControl,\n\tToolbarDropdownMenu,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n} from '@wordpress/components';\nimport {\n\talignLeft,\n\talignRight,\n\talignCenter,\n\tblockTable as icon,\n\ttableColumnAfter,\n\ttableColumnBefore,\n\ttableColumnDelete,\n\ttableRowAfter,\n\ttableRowBefore,\n\ttableRowDelete,\n\ttable,\n} from '@wordpress/icons';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tcreateTable,\n\tupdateSelectedCell,\n\tgetCellAttribute,\n\tinsertRow,\n\tdeleteRow,\n\tinsertColumn,\n\tdeleteColumn,\n\ttoggleSection,\n\tisEmptyTableSection,\n} from './state';\n\nconst ALIGNMENT_CONTROLS = [\n\t{\n\t\ticon: alignLeft,\n\t\ttitle: __( 'Align column left' ),\n\t\talign: 'left',\n\t},\n\t{\n\t\ticon: alignCenter,\n\t\ttitle: __( 'Align column center' ),\n\t\talign: 'center',\n\t},\n\t{\n\t\ticon: alignRight,\n\t\ttitle: __( 'Align column right' ),\n\t\talign: 'right',\n\t},\n];\n\nconst cellAriaLabel = {\n\thead: __( 'Header cell text' ),\n\tbody: __( 'Body cell text' ),\n\tfoot: __( 'Footer cell text' ),\n};\n\nconst placeholder = {\n\thead: __( 'Header label' ),\n\tfoot: __( 'Footer label' ),\n};\n\nfunction TSection( { name, ...props } ) {\n\tconst TagName = `t${ name }`;\n\treturn <TagName { ...props } />;\n}\n\nfunction TableEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tisSelected,\n} ) {\n\tconst { hasFixedLayout, caption, head, foot } = attributes;\n\tconst [ initialRowCount, setInitialRowCount ] = useState( 2 );\n\tconst [ initialColumnCount, setInitialColumnCount ] = useState( 2 );\n\tconst [ selectedCell, setSelectedCell ] = useState();\n\n\tconst colorProps = useColorProps( attributes );\n\tconst borderProps = useBorderProps( attributes );\n\n\tconst tableRef = useRef();\n\tconst [ hasTableCreated, setHasTableCreated ] = useState( false );\n\n\t/**\n\t * Updates the initial column count used for table creation.\n\t *\n\t * @param {number} count New initial column count.\n\t */\n\tfunction onChangeInitialColumnCount( count ) {\n\t\tsetInitialColumnCount( count );\n\t}\n\n\t/**\n\t * Updates the initial row count used for table creation.\n\t *\n\t * @param {number} count New initial row count.\n\t */\n\tfunction onChangeInitialRowCount( count ) {\n\t\tsetInitialRowCount( count );\n\t}\n\n\t/**\n\t * Creates a table based on dimensions in local state.\n\t *\n\t * @param {Object} event Form submit event.\n\t */\n\tfunction onCreateTable( event ) {\n\t\tevent.preventDefault();\n\n\t\tsetAttributes(\n\t\t\tcreateTable( {\n\t\t\t\trowCount: parseInt( initialRowCount, 10 ) || 2,\n\t\t\t\tcolumnCount: parseInt( initialColumnCount, 10 ) || 2,\n\t\t\t} )\n\t\t);\n\t\tsetHasTableCreated( true );\n\t}\n\n\t/**\n\t * Toggles whether the table has a fixed layout or not.\n\t */\n\tfunction onChangeFixedLayout() {\n\t\tsetAttributes( { hasFixedLayout: ! hasFixedLayout } );\n\t}\n\n\t/**\n\t * Changes the content of the currently selected cell.\n\t *\n\t * @param {Array} content A RichText content value.\n\t */\n\tfunction onChange( content ) {\n\t\tif ( ! selectedCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes(\n\t\t\tupdateSelectedCell(\n\t\t\t\tattributes,\n\t\t\t\tselectedCell,\n\t\t\t\t( cellAttributes ) => ( {\n\t\t\t\t\t...cellAttributes,\n\t\t\t\t\tcontent,\n\t\t\t\t} )\n\t\t\t)\n\t\t);\n\t}\n\n\t/**\n\t * Align text within the a column.\n\t *\n\t * @param {string} align The new alignment to apply to the column.\n\t */\n\tfunction onChangeColumnAlignment( align ) {\n\t\tif ( ! selectedCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Convert the cell selection to a column selection so that alignment\n\t\t// is applied to the entire column.\n\t\tconst columnSelection = {\n\t\t\ttype: 'column',\n\t\t\tcolumnIndex: selectedCell.columnIndex,\n\t\t};\n\n\t\tconst newAttributes = updateSelectedCell(\n\t\t\tattributes,\n\t\t\tcolumnSelection,\n\t\t\t( cellAttributes ) => ( {\n\t\t\t\t...cellAttributes,\n\t\t\t\talign,\n\t\t\t} )\n\t\t);\n\t\tsetAttributes( newAttributes );\n\t}\n\n\t/**\n\t * Get the alignment of the currently selected cell.\n\t *\n\t * @return {string} The new alignment to apply to the column.\n\t */\n\tfunction getCellAlignment() {\n\t\tif ( ! selectedCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn getCellAttribute( attributes, selectedCell, 'align' );\n\t}\n\n\t/**\n\t * Add or remove a `head` table section.\n\t */\n\tfunction onToggleHeaderSection() {\n\t\tsetAttributes( toggleSection( attributes, 'head' ) );\n\t}\n\n\t/**\n\t * Add or remove a `foot` table section.\n\t */\n\tfunction onToggleFooterSection() {\n\t\tsetAttributes( toggleSection( attributes, 'foot' ) );\n\t}\n\n\t/**\n\t * Inserts a row at the currently selected row index, plus `delta`.\n\t *\n\t * @param {number} delta Offset for selected row index at which to insert.\n\t */\n\tfunction onInsertRow( delta ) {\n\t\tif ( ! selectedCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { sectionName, rowIndex } = selectedCell;\n\t\tconst newRowIndex = rowIndex + delta;\n\n\t\tsetAttributes(\n\t\t\tinsertRow( attributes, {\n\t\t\t\tsectionName,\n\t\t\t\trowIndex: newRowIndex,\n\t\t\t} )\n\t\t);\n\t\t// Select the first cell of the new row.\n\t\tsetSelectedCell( {\n\t\t\tsectionName,\n\t\t\trowIndex: newRowIndex,\n\t\t\tcolumnIndex: 0,\n\t\t\ttype: 'cell',\n\t\t} );\n\t}\n\n\t/**\n\t * Inserts a row before the currently selected row.\n\t */\n\tfunction onInsertRowBefore() {\n\t\tonInsertRow( 0 );\n\t}\n\n\t/**\n\t * Inserts a row after the currently selected row.\n\t */\n\tfunction onInsertRowAfter() {\n\t\tonInsertRow( 1 );\n\t}\n\n\t/**\n\t * Deletes the currently selected row.\n\t */\n\tfunction onDeleteRow() {\n\t\tif ( ! selectedCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { sectionName, rowIndex } = selectedCell;\n\n\t\tsetSelectedCell();\n\t\tsetAttributes( deleteRow( attributes, { sectionName, rowIndex } ) );\n\t}\n\n\t/**\n\t * Inserts a column at the currently selected column index, plus `delta`.\n\t *\n\t * @param {number} delta Offset for selected column index at which to insert.\n\t */\n\tfunction onInsertColumn( delta = 0 ) {\n\t\tif ( ! selectedCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { columnIndex } = selectedCell;\n\t\tconst newColumnIndex = columnIndex + delta;\n\n\t\tsetAttributes(\n\t\t\tinsertColumn( attributes, {\n\t\t\t\tcolumnIndex: newColumnIndex,\n\t\t\t} )\n\t\t);\n\t\t// Select the first cell of the new column.\n\t\tsetSelectedCell( {\n\t\t\trowIndex: 0,\n\t\t\tcolumnIndex: newColumnIndex,\n\t\t\ttype: 'cell',\n\t\t} );\n\t}\n\n\t/**\n\t * Inserts a column before the currently selected column.\n\t */\n\tfunction onInsertColumnBefore() {\n\t\tonInsertColumn( 0 );\n\t}\n\n\t/**\n\t * Inserts a column after the currently selected column.\n\t */\n\tfunction onInsertColumnAfter() {\n\t\tonInsertColumn( 1 );\n\t}\n\n\t/**\n\t * Deletes the currently selected column.\n\t */\n\tfunction onDeleteColumn() {\n\t\tif ( ! selectedCell ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { sectionName, columnIndex } = selectedCell;\n\n\t\tsetSelectedCell();\n\t\tsetAttributes(\n\t\t\tdeleteColumn( attributes, { sectionName, columnIndex } )\n\t\t);\n\t}\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetSelectedCell();\n\t\t}\n\t}, [ isSelected ] );\n\n\tuseEffect( () => {\n\t\tif ( hasTableCreated ) {\n\t\t\ttableRef?.current\n\t\t\t\t?.querySelector( 'td[contentEditable=\"true\"]' )\n\t\t\t\t?.focus();\n\t\t\tsetHasTableCreated( false );\n\t\t}\n\t}, [ hasTableCreated ] );\n\n\tconst sections = [ 'head', 'body', 'foot' ].filter(\n\t\t( name ) => ! isEmptyTableSection( attributes[ name ] )\n\t);\n\n\tconst tableControls = [\n\t\t{\n\t\t\ticon: tableRowBefore,\n\t\t\ttitle: __( 'Insert row before' ),\n\t\t\tisDisabled: ! selectedCell,\n\t\t\tonClick: onInsertRowBefore,\n\t\t},\n\t\t{\n\t\t\ticon: tableRowAfter,\n\t\t\ttitle: __( 'Insert row after' ),\n\t\t\tisDisabled: ! selectedCell,\n\t\t\tonClick: onInsertRowAfter,\n\t\t},\n\t\t{\n\t\t\ticon: tableRowDelete,\n\t\t\ttitle: __( 'Delete row' ),\n\t\t\tisDisabled: ! selectedCell,\n\t\t\tonClick: onDeleteRow,\n\t\t},\n\t\t{\n\t\t\ticon: tableColumnBefore,\n\t\t\ttitle: __( 'Insert column before' ),\n\t\t\tisDisabled: ! selectedCell,\n\t\t\tonClick: onInsertColumnBefore,\n\t\t},\n\t\t{\n\t\t\ticon: tableColumnAfter,\n\t\t\ttitle: __( 'Insert column after' ),\n\t\t\tisDisabled: ! selectedCell,\n\t\t\tonClick: onInsertColumnAfter,\n\t\t},\n\t\t{\n\t\t\ticon: tableColumnDelete,\n\t\t\ttitle: __( 'Delete column' ),\n\t\t\tisDisabled: ! selectedCell,\n\t\t\tonClick: onDeleteColumn,\n\t\t},\n\t];\n\n\tconst renderedSections = [ 'head', 'body', 'foot' ].map( ( name ) => (\n\t\t<TSection name={ name } key={ name }>\n\t\t\t{ attributes[ name ].map( ( { cells }, rowIndex ) => (\n\t\t\t\t<tr key={ rowIndex }>\n\t\t\t\t\t{ cells.map(\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t{ content, tag: CellTag, scope, align },\n\t\t\t\t\t\t\tcolumnIndex\n\t\t\t\t\t\t) => (\n\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\ttagName={ CellTag }\n\t\t\t\t\t\t\t\tkey={ columnIndex }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t[ `has-text-align-${ align }` ]: align,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t'wp-block-table__cell-content'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tscope={ CellTag === 'th' ? scope : undefined }\n\t\t\t\t\t\t\t\tvalue={ content }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tunstableOnFocus={ () => {\n\t\t\t\t\t\t\t\t\tsetSelectedCell( {\n\t\t\t\t\t\t\t\t\t\tsectionName: name,\n\t\t\t\t\t\t\t\t\t\trowIndex,\n\t\t\t\t\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\t\t\t\t\ttype: 'cell',\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\taria-label={ cellAriaLabel[ name ] }\n\t\t\t\t\t\t\t\tplaceholder={ placeholder[ name ] }\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</tr>\n\t\t\t) ) }\n\t\t</TSection>\n\t) );\n\n\tconst isEmpty = ! sections.length;\n\n\treturn (\n\t\t<figure { ...useBlockProps( { ref: tableRef } ) }>\n\t\t\t{ ! isEmpty && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t\t<AlignmentControl\n\t\t\t\t\t\t\tlabel={ __( 'Change column alignment' ) }\n\t\t\t\t\t\t\talignmentControls={ ALIGNMENT_CONTROLS }\n\t\t\t\t\t\t\tvalue={ getCellAlignment() }\n\t\t\t\t\t\t\tonChange={ ( nextAlign ) =>\n\t\t\t\t\t\t\t\tonChangeColumnAlignment( nextAlign )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<ToolbarDropdownMenu\n\t\t\t\t\t\t\thasArrowIndicator\n\t\t\t\t\t\t\ticon={ table }\n\t\t\t\t\t\t\tlabel={ __( 'Edit table' ) }\n\t\t\t\t\t\t\tcontrols={ tableControls }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ ! isEmpty && (\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<PanelBody\n\t\t\t\t\t\ttitle={ __( 'Settings' ) }\n\t\t\t\t\t\tclassName=\"blocks-table-settings\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Fixed width table cells' ) }\n\t\t\t\t\t\t\tchecked={ !! hasFixedLayout }\n\t\t\t\t\t\t\tonChange={ onChangeFixedLayout }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Header section' ) }\n\t\t\t\t\t\t\tchecked={ !! ( head && head.length ) }\n\t\t\t\t\t\t\tonChange={ onToggleHeaderSection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Footer section' ) }\n\t\t\t\t\t\t\tchecked={ !! ( foot && foot.length ) }\n\t\t\t\t\t\t\tonChange={ onToggleFooterSection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t{ ! isEmpty && (\n\t\t\t\t<table\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tcolorProps.className,\n\t\t\t\t\t\tborderProps.className,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'has-fixed-layout': hasFixedLayout,\n\t\t\t\t\t\t\t// This is required in the editor only to overcome\n\t\t\t\t\t\t\t// the fact the editor rewrites individual border\n\t\t\t\t\t\t\t// widths into a shorthand format.\n\t\t\t\t\t\t\t'has-individual-borders': hasSplitBorders(\n\t\t\t\t\t\t\t\tattributes?.style?.border\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\tstyle={ { ...colorProps.style, ...borderProps.style } }\n\t\t\t\t>\n\t\t\t\t\t{ renderedSections }\n\t\t\t\t</table>\n\t\t\t) }\n\t\t\t{ ! isEmpty && (\n\t\t\t\t<RichText\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\tclassName={ __experimentalGetElementClassName( 'caption' ) }\n\t\t\t\t\taria-label={ __( 'Table caption text' ) }\n\t\t\t\t\tplaceholder={ __( 'Add caption' ) }\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { caption: value } )\n\t\t\t\t\t}\n\t\t\t\t\t// Deselect the selected table cell when the caption is focused.\n\t\t\t\t\tunstableOnFocus={ () => setSelectedCell() }\n\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\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\t{ isEmpty && (\n\t\t\t\t<Placeholder\n\t\t\t\t\tlabel={ __( 'Table' ) }\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } showColors /> }\n\t\t\t\t\tinstructions={ __( 'Insert a table for sharing data.' ) }\n\t\t\t\t>\n\t\t\t\t\t<form\n\t\t\t\t\t\tclassName=\"blocks-table__placeholder-form\"\n\t\t\t\t\t\tonSubmit={ onCreateTable }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tlabel={ __( 'Column count' ) }\n\t\t\t\t\t\t\tvalue={ initialColumnCount }\n\t\t\t\t\t\t\tonChange={ onChangeInitialColumnCount }\n\t\t\t\t\t\t\tmin=\"1\"\n\t\t\t\t\t\t\tclassName=\"blocks-table__placeholder-input\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tlabel={ __( 'Row count' ) }\n\t\t\t\t\t\t\tvalue={ initialRowCount }\n\t\t\t\t\t\t\tonChange={ onChangeInitialRowCount }\n\t\t\t\t\t\t\tmin=\"1\"\n\t\t\t\t\t\t\tclassName=\"blocks-table__placeholder-input\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"blocks-table__placeholder-button\"\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Create Table' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</form>\n\t\t\t\t</Placeholder>\n\t\t\t) }\n\t\t</figure>\n\t);\n}\n\nexport default TableEdit;\n","const tableContentPasteSchema = ( { phrasingContentSchema } ) => ( {\n\ttr: {\n\t\tallowEmpty: true,\n\t\tchildren: {\n\t\t\tth: {\n\t\t\t\tallowEmpty: true,\n\t\t\t\tchildren: phrasingContentSchema,\n\t\t\t\tattributes: [ 'scope' ],\n\t\t\t},\n\t\t\ttd: {\n\t\t\t\tallowEmpty: true,\n\t\t\t\tchildren: phrasingContentSchema,\n\t\t\t},\n\t\t},\n\t},\n} );\n\nconst tablePasteSchema = ( args ) => ( {\n\ttable: {\n\t\tchildren: {\n\t\t\tthead: {\n\t\t\t\tallowEmpty: true,\n\t\t\t\tchildren: tableContentPasteSchema( args ),\n\t\t\t},\n\t\t\ttfoot: {\n\t\t\t\tallowEmpty: true,\n\t\t\t\tchildren: tableContentPasteSchema( args ),\n\t\t\t},\n\t\t\ttbody: {\n\t\t\t\tallowEmpty: true,\n\t\t\t\tchildren: tableContentPasteSchema( args ),\n\t\t\t},\n\t\t},\n\t},\n} );\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tselector: 'table',\n\t\t\tschema: tablePasteSchema,\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { blockTable 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\thead: [\n\t\t\t\t{\n\t\t\t\t\tcells: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: __( 'Version' ),\n\t\t\t\t\t\t\ttag: 'th',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: __( 'Jazz Musician' ),\n\t\t\t\t\t\t\ttag: 'th',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: __( 'Release Date' ),\n\t\t\t\t\t\t\ttag: 'th',\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\tbody: [\n\t\t\t\t{\n\t\t\t\t\tcells: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: '5.2',\n\t\t\t\t\t\t\ttag: 'td',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: 'Jaco Pastorius',\n\t\t\t\t\t\t\ttag: 'td',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: __( 'May 7, 2019' ),\n\t\t\t\t\t\t\ttag: 'td',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcells: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: '5.1',\n\t\t\t\t\t\t\ttag: 'td',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: 'Betty Carter',\n\t\t\t\t\t\t\ttag: 'td',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: __( 'February 21, 2019' ),\n\t\t\t\t\t\t\ttag: 'td',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcells: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: '5.0',\n\t\t\t\t\t\t\ttag: 'td',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: 'Bebo Valdés',\n\t\t\t\t\t\t\ttag: 'td',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontent: __( 'December 6, 2018' ),\n\t\t\t\t\t\t\ttag: 'td',\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},\n\ttransforms,\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { hasFixedLayout, head, body, foot, caption } = attributes;\n\tconst isEmpty = ! head.length && ! body.length && ! foot.length;\n\n\tif ( isEmpty ) {\n\t\treturn null;\n\t}\n\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\tconst borderProps = getBorderClassesAndStyles( attributes );\n\n\tconst classes = classnames( colorProps.className, borderProps.className, {\n\t\t'has-fixed-layout': hasFixedLayout,\n\t} );\n\n\tconst hasCaption = ! RichText.isEmpty( caption );\n\n\tconst Section = ( { type, rows } ) => {\n\t\tif ( ! rows.length ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst Tag = `t${ type }`;\n\n\t\treturn (\n\t\t\t<Tag>\n\t\t\t\t{ rows.map( ( { cells }, rowIndex ) => (\n\t\t\t\t\t<tr key={ rowIndex }>\n\t\t\t\t\t\t{ cells.map(\n\t\t\t\t\t\t\t( { content, tag, scope, align }, cellIndex ) => {\n\t\t\t\t\t\t\t\tconst cellClasses = classnames( {\n\t\t\t\t\t\t\t\t\t[ `has-text-align-${ align }` ]: align,\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t\tcellClasses\n\t\t\t\t\t\t\t\t\t\t\t\t? cellClasses\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdata-align={ align }\n\t\t\t\t\t\t\t\t\t\ttagName={ tag }\n\t\t\t\t\t\t\t\t\t\tvalue={ content }\n\t\t\t\t\t\t\t\t\t\tkey={ cellIndex }\n\t\t\t\t\t\t\t\t\t\tscope={\n\t\t\t\t\t\t\t\t\t\t\ttag === 'th' ? scope : undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t) ) }\n\t\t\t</Tag>\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure { ...useBlockProps.save() }>\n\t\t\t<table\n\t\t\t\tclassName={ classes === '' ? undefined : classes }\n\t\t\t\tstyle={ { ...colorProps.style, ...borderProps.style } }\n\t\t\t>\n\t\t\t\t<Section type=\"head\" rows={ head } />\n\t\t\t\t<Section type=\"body\" rows={ body } />\n\t\t\t\t<Section type=\"foot\" rows={ foot } />\n\t\t\t</table>\n\t\t\t{ hasCaption && (\n\t\t\t\t<RichText.Content\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t\tclassName={ __experimentalGetElementClassName( 'caption' ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</figure>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/components';\n\nexport default (\n\t<SVG\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t>\n\t\t<Path\n\t\t\td=\"M15.1 15.8H20v-1.5h-4.9v1.5zm-4-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 3c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zm5-3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM6 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n\t\t\tfill=\"#1e1e1e\"\n\t\t/>\n\t</SVG>\n);\n","/**\n * WordPress dependencies\n */\nimport type { WPElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { NestedHeadingData } from './utils';\n\nconst ENTRY_CLASS_NAME = 'wp-block-table-of-contents__entry';\n\nexport default function TableOfContentsList( {\n\tnestedHeadingList,\n}: {\n\tnestedHeadingList: NestedHeadingData[];\n} ): WPElement {\n\treturn (\n\t\t<>\n\t\t\t{ nestedHeadingList.map( ( node, index ) => {\n\t\t\t\tconst { content, link } = node.heading;\n\n\t\t\t\tconst entry = link ? (\n\t\t\t\t\t<a className={ ENTRY_CLASS_NAME } href={ link }>\n\t\t\t\t\t\t{ content }\n\t\t\t\t\t</a>\n\t\t\t\t) : (\n\t\t\t\t\t<span className={ ENTRY_CLASS_NAME }>{ content }</span>\n\t\t\t\t);\n\n\t\t\t\treturn (\n\t\t\t\t\t<li key={ index }>\n\t\t\t\t\t\t{ entry }\n\t\t\t\t\t\t{ node.children ? (\n\t\t\t\t\t\t\t<ol>\n\t\t\t\t\t\t\t\t<TableOfContentsList\n\t\t\t\t\t\t\t\t\tnestedHeadingList={ node.children }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ol>\n\t\t\t\t\t\t) : null }\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n","export interface HeadingData {\n\t/** The plain text content of the heading. */\n\tcontent: string;\n\t/** The heading level. */\n\tlevel: number;\n\t/** Link to the heading. */\n\tlink: string;\n}\n\nexport interface NestedHeadingData {\n\t/** The heading content, level, and link. */\n\theading: HeadingData;\n\t/** The sub-headings of this heading, if any. */\n\tchildren: NestedHeadingData[] | null;\n}\n\n/**\n * Takes a flat list of heading parameters and nests them based on each header's\n * immediate parent's level.\n *\n * @param  headingList The flat list of headings to nest.\n *\n * @return The nested list of headings.\n */\nexport function linearToNestedHeadingList(\n\theadingList: HeadingData[]\n): NestedHeadingData[] {\n\tconst nestedHeadingList: NestedHeadingData[] = [];\n\n\theadingList.forEach( ( heading, key ) => {\n\t\tif ( heading.content === '' ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure we are only working with the same level as the first iteration in our set.\n\t\tif ( heading.level === headingList[ 0 ].level ) {\n\t\t\t// Check that the next iteration will return a value.\n\t\t\t// If it does and the next level is greater than the current level,\n\t\t\t// the next iteration becomes a child of the current iteration.\n\t\t\tif ( headingList[ key + 1 ]?.level > heading.level ) {\n\t\t\t\t// We must calculate the last index before the next iteration that\n\t\t\t\t// has the same level (siblings). We then use this index to slice\n\t\t\t\t// the array for use in recursion. This prevents duplicate nodes.\n\t\t\t\tlet endOfSlice = headingList.length;\n\t\t\t\tfor ( let i = key + 1; i < headingList.length; i++ ) {\n\t\t\t\t\tif ( headingList[ i ].level === heading.level ) {\n\t\t\t\t\t\tendOfSlice = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// We found a child node: Push a new node onto the return array\n\t\t\t\t// with children.\n\t\t\t\tnestedHeadingList.push( {\n\t\t\t\t\theading,\n\t\t\t\t\tchildren: linearToNestedHeadingList(\n\t\t\t\t\t\theadingList.slice( key + 1, endOfSlice )\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\t// No child node: Push a new node onto the return array.\n\t\t\t\tnestedHeadingList.push( {\n\t\t\t\t\theading,\n\t\t\t\t\tchildren: null,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n\n\treturn nestedHeadingList;\n}\n","/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport icon from './icon';\nimport save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport { isEqual } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tstore as blockEditorStore,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tPanelBody,\n\tPlaceholder,\n\tToggleControl,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { useDisabled } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { renderToString, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { addQueryArgs, removeQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport icon from './icon';\nimport TableOfContentsList from './list';\nimport { linearToNestedHeadingList } from './utils';\n\n/** @typedef {import('./utils').HeadingData} HeadingData */\n\n/**\n * Table of Contents block edit component.\n *\n * @param {Object}                       props                                   The props.\n * @param {Object}                       props.attributes                        The block attributes.\n * @param {HeadingData[]}                props.attributes.headings               A list of data for each heading in the post.\n * @param {boolean}                      props.attributes.onlyIncludeCurrentPage Whether to only include headings from the current page (if the post is paginated).\n * @param {string}                       props.clientId\n * @param {(attributes: Object) => void} props.setAttributes\n *\n * @return {WPComponent} The component.\n */\nexport default function TableOfContentsEdit( {\n\tattributes: { headings = [], onlyIncludeCurrentPage },\n\tclientId,\n\tsetAttributes,\n} ) {\n\tconst blockProps = useBlockProps();\n\tconst disabledRef = useDisabled();\n\n\tconst canInsertList = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn canInsertBlockType( 'core/list', rootClientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { __unstableMarkNextChangeAsNotPersistent, replaceBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\n\t/**\n\t * The latest heading data, or null if the new data deeply equals the saved\n\t * headings attribute.\n\t *\n\t * Since useSelect forces a re-render when its return value is shallowly\n\t * inequal to its prior call, we would be re-rendering this block every time\n\t * the stores change, even if the latest headings were deeply equal to the\n\t * ones saved in the block attributes.\n\t *\n\t * By returning null when they're equal, we reduce that to 2 renders: one\n\t * when there are new latest headings (and so it returns them), and one when\n\t * they haven't changed (so it returns null). As long as the latest heading\n\t * data remains the same, further calls of the useSelect callback will\n\t * continue to return null, thus preventing any forced re-renders.\n\t */\n\tconst latestHeadings = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetClientIdsWithDescendants,\n\t\t\t\t__experimentalGetGlobalBlocksByName: getGlobalBlocksByName,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\t// FIXME: @wordpress/block-library should not depend on @wordpress/editor.\n\t\t\t// Blocks can be loaded into a *non-post* block editor, so to avoid\n\t\t\t// declaring @wordpress/editor as a dependency, we must access its\n\t\t\t// store by string. When the store is not available, editorSelectors\n\t\t\t// will be null, and the block's saved markup will lack permalinks.\n\t\t\t// eslint-disable-next-line @wordpress/data-no-store-string-literals\n\t\t\tconst editorSelectors = select( 'core/editor' );\n\n\t\t\tconst pageBreakClientIds = getGlobalBlocksByName( 'core/nextpage' );\n\n\t\t\tconst isPaginated = pageBreakClientIds.length !== 0;\n\n\t\t\t// Get the client ids of all blocks in the editor.\n\t\t\tconst allBlockClientIds = getClientIdsWithDescendants();\n\n\t\t\t// If onlyIncludeCurrentPage is true, calculate the page (of a paginated post) this block is part of, so we know which headings to include; otherwise, skip the calculation.\n\t\t\tlet tocPage = 1;\n\n\t\t\tif ( isPaginated && onlyIncludeCurrentPage ) {\n\t\t\t\t// We can't use getBlockIndex because it only returns the index\n\t\t\t\t// relative to sibling blocks.\n\t\t\t\tconst tocIndex = allBlockClientIds.indexOf( clientId );\n\n\t\t\t\tfor ( const [\n\t\t\t\t\tblockIndex,\n\t\t\t\t\tblockClientId,\n\t\t\t\t] of allBlockClientIds.entries() ) {\n\t\t\t\t\t// If we've reached blocks after the Table of Contents, we've\n\t\t\t\t\t// finished calculating which page the block is on.\n\t\t\t\t\tif ( blockIndex >= tocIndex ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif ( getBlockName( blockClientId ) === 'core/nextpage' ) {\n\t\t\t\t\t\ttocPage++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst _latestHeadings = [];\n\n\t\t\t/** The page (of a paginated post) a heading will be part of. */\n\t\t\tlet headingPage = 1;\n\n\t\t\t/**\n\t\t\t * A permalink to the current post. If the core/editor store is\n\t\t\t * unavailable, this variable will be null.\n\t\t\t */\n\t\t\tconst permalink = editorSelectors?.getPermalink() ?? null;\n\n\t\t\tlet headingPageLink = null;\n\n\t\t\t// If the core/editor store is available, we can add permalinks to the\n\t\t\t// generated table of contents.\n\t\t\tif ( typeof permalink === 'string' ) {\n\t\t\t\theadingPageLink = isPaginated\n\t\t\t\t\t? addQueryArgs( permalink, { page: headingPage } )\n\t\t\t\t\t: permalink;\n\t\t\t}\n\n\t\t\tfor ( const blockClientId of allBlockClientIds ) {\n\t\t\t\tconst blockName = getBlockName( blockClientId );\n\t\t\t\tif ( blockName === 'core/nextpage' ) {\n\t\t\t\t\theadingPage++;\n\n\t\t\t\t\t// If we're only including headings from the current page (of\n\t\t\t\t\t// a paginated post), then exit the loop if we've reached the\n\t\t\t\t\t// pages after the one with the Table of Contents block.\n\t\t\t\t\tif ( onlyIncludeCurrentPage && headingPage > tocPage ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof permalink === 'string' ) {\n\t\t\t\t\t\theadingPageLink = addQueryArgs(\n\t\t\t\t\t\t\tremoveQueryArgs( permalink, [ 'page' ] ),\n\t\t\t\t\t\t\t{ page: headingPage }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If we're including all headings or we've reached headings on\n\t\t\t\t// the same page as the Table of Contents block, add them to the\n\t\t\t\t// list.\n\t\t\t\telse if (\n\t\t\t\t\t! onlyIncludeCurrentPage ||\n\t\t\t\t\theadingPage === tocPage\n\t\t\t\t) {\n\t\t\t\t\tif ( blockName === 'core/heading' ) {\n\t\t\t\t\t\tconst headingAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( blockClientId );\n\n\t\t\t\t\t\tconst canBeLinked =\n\t\t\t\t\t\t\ttypeof headingPageLink === 'string' &&\n\t\t\t\t\t\t\ttypeof headingAttributes.anchor === 'string' &&\n\t\t\t\t\t\t\theadingAttributes.anchor !== '';\n\n\t\t\t\t\t\t_latestHeadings.push( {\n\t\t\t\t\t\t\t// Convert line breaks to spaces, and get rid of HTML tags in the headings.\n\t\t\t\t\t\t\tcontent: stripHTML(\n\t\t\t\t\t\t\t\theadingAttributes.content.replace(\n\t\t\t\t\t\t\t\t\t/(<br *\\/?>)+/g,\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),\n\t\t\t\t\t\t\tlevel: headingAttributes.level,\n\t\t\t\t\t\t\tlink: canBeLinked\n\t\t\t\t\t\t\t\t? `${ headingPageLink }#${ headingAttributes.anchor }`\n\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( isEqual( headings, _latestHeadings ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn _latestHeadings;\n\t\t},\n\t\t[ clientId, onlyIncludeCurrentPage, headings ]\n\t);\n\n\tuseEffect( () => {\n\t\tif ( latestHeadings !== null ) {\n\t\t\t// This is required to keep undo working and not create 2 undo steps\n\t\t\t// for each heading change.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( { headings: latestHeadings } );\n\t\t}\n\t}, [ latestHeadings ] );\n\n\tconst headingTree = linearToNestedHeadingList( headings );\n\n\tconst toolbarControls = canInsertList && (\n\t\t<BlockControls>\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlock( 'core/list', {\n\t\t\t\t\t\t\t\tordered: true,\n\t\t\t\t\t\t\t\tvalues: renderToString(\n\t\t\t\t\t\t\t\t\t<TableOfContentsList\n\t\t\t\t\t\t\t\t\t\tnestedHeadingList={ headingTree }\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} )\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Convert to static list' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Only include current page' ) }\n\t\t\t\t\tchecked={ onlyIncludeCurrentPage }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { onlyIncludeCurrentPage: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={\n\t\t\t\t\t\tonlyIncludeCurrentPage\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'Only including headings from the current page (if the post is paginated).'\n\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Toggle to only include headings from the current page (if the post is paginated).'\n\t\t\t\t\t\t\t  )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\t// If there are no headings or the only heading is empty.\n\t// Note that the toolbar controls are intentionally omitted since the\n\t// \"Convert to static list\" option is useless to the placeholder state.\n\tif ( headings.length === 0 ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\t\tlabel=\"Table of Contents\"\n\t\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t\t'Start adding Heading blocks to create a table of contents. Headings with HTML anchors will be linked here.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ inspectorControls }\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<nav { ...blockProps }>\n\t\t\t\t<ol ref={ disabledRef }>\n\t\t\t\t\t<TableOfContentsList nestedHeadingList={ headingTree } />\n\t\t\t\t</ol>\n\t\t\t</nav>\n\t\t\t{ toolbarControls }\n\t\t\t{ inspectorControls }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useBlockProps } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport TableOfContentsList from './list';\nimport { linearToNestedHeadingList } from './utils';\n\nexport default function save( { attributes: { headings = [] } } ) {\n\tif ( headings.length === 0 ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<nav { ...useBlockProps.save() }>\n\t\t\t<ol>\n\t\t\t\t<TableOfContentsList\n\t\t\t\t\tnestedHeadingList={ linearToNestedHeadingList( headings ) }\n\t\t\t\t/>\n\t\t\t</ol>\n\t\t</nav>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/categories' ],\n\t\t\ttransform: () => createBlock( 'core/tag-cloud' ),\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/categories' ],\n\t\t\ttransform: () => createBlock( 'core/categories' ),\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * External dependencies\n */\nimport { map, filter } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tFlexItem,\n\tPanelBody,\n\tToggleControl,\n\tSelectControl,\n\tRangeControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n} from '@wordpress/components';\nimport { withSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\tuseSetting,\n} from '@wordpress/block-editor';\nimport ServerSideRender from '@wordpress/server-side-render';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Minimum number of tags a user can show using this block.\n *\n * @type {number}\n */\nconst MIN_TAGS = 1;\n\n/**\n * Maximum number of tags a user can show using this block.\n *\n * @type {number}\n */\nconst MAX_TAGS = 100;\n\nconst MIN_FONT_SIZE = 0.1;\nconst MAX_FONT_SIZE = 100;\n\nfunction TagCloudEdit( { attributes, setAttributes, taxonomies } ) {\n\tconst {\n\t\ttaxonomy,\n\t\tshowTagCounts,\n\t\tnumberOfTags,\n\t\tsmallestFontSize,\n\t\tlargestFontSize,\n\t} = attributes;\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [\n\t\t\t'%',\n\t\t\t'px',\n\t\t\t'em',\n\t\t\t'rem',\n\t\t],\n\t} );\n\n\tconst getTaxonomyOptions = () => {\n\t\tconst selectOption = {\n\t\t\tlabel: __( '- Select -' ),\n\t\t\tvalue: '',\n\t\t\tdisabled: true,\n\t\t};\n\t\tconst taxonomyOptions = map(\n\t\t\tfilter( taxonomies, 'show_cloud' ),\n\t\t\t( item ) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: item.slug,\n\t\t\t\t\tlabel: item.name,\n\t\t\t\t};\n\t\t\t}\n\t\t);\n\n\t\treturn [ selectOption, ...taxonomyOptions ];\n\t};\n\n\tconst onFontSizeChange = ( fontSizeLabel, newValue ) => {\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst [ quantity, newUnit ] =\n\t\t\tparseQuantityAndUnitFromRawValue( newValue );\n\t\tif ( ! Number.isFinite( quantity ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst updateObj = { [ fontSizeLabel ]: newValue };\n\t\t// We need to keep in sync the `unit` changes to both `smallestFontSize`\n\t\t// and `largestFontSize` attributes.\n\t\tObject.entries( {\n\t\t\tsmallestFontSize,\n\t\t\tlargestFontSize,\n\t\t} ).forEach( ( [ attribute, currentValue ] ) => {\n\t\t\tconst [ currentQuantity, currentUnit ] =\n\t\t\t\tparseQuantityAndUnitFromRawValue( currentValue );\n\t\t\t// Only add an update if the other font size attribute has a different unit.\n\t\t\tif ( attribute !== fontSizeLabel && currentUnit !== newUnit ) {\n\t\t\t\tupdateObj[ attribute ] = `${ currentQuantity }${ newUnit }`;\n\t\t\t}\n\t\t} );\n\t\tsetAttributes( updateObj );\n\t};\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t<SelectControl\n\t\t\t\t\tlabel={ __( 'Taxonomy' ) }\n\t\t\t\t\toptions={ getTaxonomyOptions() }\n\t\t\t\t\tvalue={ taxonomy }\n\t\t\t\t\tonChange={ ( selectedTaxonomy ) =>\n\t\t\t\t\t\tsetAttributes( { taxonomy: selectedTaxonomy } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ __( 'Show post counts' ) }\n\t\t\t\t\tchecked={ showTagCounts }\n\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\tsetAttributes( { showTagCounts: ! showTagCounts } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<RangeControl\n\t\t\t\t\tlabel={ __( 'Number of tags' ) }\n\t\t\t\t\tvalue={ numberOfTags }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { numberOfTags: value } )\n\t\t\t\t\t}\n\t\t\t\t\tmin={ MIN_TAGS }\n\t\t\t\t\tmax={ MAX_TAGS }\n\t\t\t\t\trequired\n\t\t\t\t/>\n\t\t\t\t<Flex>\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Smallest size' ) }\n\t\t\t\t\t\t\tvalue={ smallestFontSize }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonFontSizeChange( 'smallestFontSize', value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tmin={ MIN_FONT_SIZE }\n\t\t\t\t\t\t\tmax={ MAX_FONT_SIZE }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Largest size' ) }\n\t\t\t\t\t\t\tvalue={ largestFontSize }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonFontSizeChange( 'largestFontSize', value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tmin={ MIN_FONT_SIZE }\n\t\t\t\t\t\t\tmax={ MAX_FONT_SIZE }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ inspectorControls }\n\t\t\t<div { ...useBlockProps() }>\n\t\t\t\t<ServerSideRender\n\t\t\t\t\tkey=\"tag-cloud\"\n\t\t\t\t\tblock=\"core/tag-cloud\"\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\treturn {\n\t\ttaxonomies: select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t};\n} )( TagCloudEdit );\n","/**\n * WordPress dependencies\n */\nimport { tag as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport transforms from './transforms';\nimport metadata from './block.json';\nimport edit from './edit';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {},\n\tedit,\n\ttransforms,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * Locale character mapping rules.\n */\ninterface Locale {\n  regexp: RegExp;\n  map: Record<string, string>;\n}\n\n/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nconst SUPPORTED_LOCALE: Record<string, Locale> = {\n  tr: {\n    regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n    map: {\n      İ: \"\\u0069\",\n      I: \"\\u0131\",\n      İ: \"\\u0069\",\n    },\n  },\n  az: {\n    regexp: /\\u0130/g,\n    map: {\n      İ: \"\\u0069\",\n      I: \"\\u0131\",\n      İ: \"\\u0069\",\n    },\n  },\n  lt: {\n    regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n    map: {\n      I: \"\\u0069\\u0307\",\n      J: \"\\u006A\\u0307\",\n      Į: \"\\u012F\\u0307\",\n      Ì: \"\\u0069\\u0307\\u0300\",\n      Í: \"\\u0069\\u0307\\u0301\",\n      Ĩ: \"\\u0069\\u0307\\u0303\",\n    },\n  },\n};\n\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str: string, locale: string) {\n  const lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n  if (lang) return lowerCase(str.replace(lang.regexp, (m) => lang.map[m]));\n  return lowerCase(str);\n}\n\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str: string) {\n  return str.toLowerCase();\n}\n","import { lowerCase } from \"lower-case\";\n\nexport interface Options {\n  splitRegexp?: RegExp | RegExp[];\n  stripRegexp?: RegExp | RegExp[];\n  delimiter?: string;\n  transform?: (part: string, index: number, parts: string[]) => string;\n}\n\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nconst DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n\n// Remove all non-word characters.\nconst DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input: string, options: Options = {}) {\n  const {\n    splitRegexp = DEFAULT_SPLIT_REGEXP,\n    stripRegexp = DEFAULT_STRIP_REGEXP,\n    transform = lowerCase,\n    delimiter = \" \",\n  } = options;\n\n  let result = replace(\n    replace(input, splitRegexp, \"$1\\0$2\"),\n    stripRegexp,\n    \"\\0\"\n  );\n  let start = 0;\n  let end = result.length;\n\n  // Trim the delimiter from around the output string.\n  while (result.charAt(start) === \"\\0\") start++;\n  while (result.charAt(end - 1) === \"\\0\") end--;\n\n  // Transform each token independently.\n  return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input: string, re: RegExp | RegExp[], value: string) {\n  if (re instanceof RegExp) return input.replace(re, value);\n  return re.reduce((input, re) => input.replace(re, value), input);\n}\n","import { noCase, Options } from \"no-case\";\nimport { upperCaseFirst } from \"upper-case-first\";\n\nexport { Options };\n\nexport function capitalCaseTransform(input: string) {\n  return upperCaseFirst(input.toLowerCase());\n}\n\nexport function capitalCase(input: string, options: Options = {}) {\n  return noCase(input, {\n    delimiter: \" \",\n    transform: capitalCaseTransform,\n    ...options,\n  });\n}\n","/**\n * Upper case the first character of an input string.\n */\nexport function upperCaseFirst(input: string) {\n  return input.charAt(0).toUpperCase() + input.substr(1);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst symbolFilled = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z\" />\n\t</SVG>\n);\n\nexport default symbolFilled;\n","/**\n * External dependencies\n */\nimport { find, kebabCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useMemo } from '@wordpress/element';\nimport { serialize } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { createTemplatePartId } from './create-template-part-id';\n\n/**\n * Retrieves the available template parts for the given area.\n *\n * @param {string} area       Template part area.\n * @param {string} excludedId Template part ID to exclude.\n *\n * @return {{ templateParts: Array, isResolving: boolean }} array of template parts.\n */\nexport function useAlternativeTemplateParts( area, excludedId ) {\n\tconst { templateParts, isResolving } = useSelect( ( select ) => {\n\t\tconst { getEntityRecords, isResolving: _isResolving } =\n\t\t\tselect( coreStore );\n\t\tconst query = { per_page: -1 };\n\t\treturn {\n\t\t\ttemplateParts: getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\tquery\n\t\t\t),\n\t\t\tisLoading: _isResolving( 'getEntityRecords', [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\tquery,\n\t\t\t] ),\n\t\t};\n\t}, [] );\n\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tif ( ! templateParts ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn (\n\t\t\ttemplateParts.filter(\n\t\t\t\t( templatePart ) =>\n\t\t\t\t\tcreateTemplatePartId(\n\t\t\t\t\t\ttemplatePart.theme,\n\t\t\t\t\t\ttemplatePart.slug\n\t\t\t\t\t) !== excludedId &&\n\t\t\t\t\t( ! area ||\n\t\t\t\t\t\t'uncategorized' === area ||\n\t\t\t\t\t\ttemplatePart.area === area )\n\t\t\t) || []\n\t\t);\n\t}, [ templateParts, area ] );\n\n\treturn {\n\t\ttemplateParts: filteredTemplateParts,\n\t\tisResolving,\n\t};\n}\n\n/**\n * Retrieves the available block patterns for the given area.\n *\n * @param {string} area     Template part area.\n * @param {string} clientId Block Client ID. (The container of the block can impact allowed blocks).\n *\n * @return {Array} array of block patterns.\n */\nexport function useAlternativeBlockPatterns( area, clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst blockNameWithArea = area\n\t\t\t\t? `core/template-part/${ area }`\n\t\t\t\t: 'core/template-part';\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\t__experimentalGetPatternsByBlockTypes,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\treturn __experimentalGetPatternsByBlockTypes(\n\t\t\t\tblockNameWithArea,\n\t\t\t\trootClientId\n\t\t\t);\n\t\t},\n\t\t[ area, clientId ]\n\t);\n}\n\nexport function useCreateTemplatePartFromBlocks( area, setAttributes ) {\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\treturn async ( blocks = [], title = __( 'Untitled Template Part' ) ) => {\n\t\t// Currently template parts only allow latin chars.\n\t\t// Fallback slug will receive suffix by default.\n\t\tconst cleanSlug =\n\t\t\tkebabCase( title ).replace( /[^\\w-]+/g, '' ) || 'wp-custom-part';\n\n\t\t// If we have `area` set from block attributes, means an exposed\n\t\t// block variation was inserted. So add this prop to the template\n\t\t// part entity on creation. Afterwards remove `area` value from\n\t\t// block attributes.\n\t\tconst record = {\n\t\t\ttitle,\n\t\t\tslug: cleanSlug,\n\t\t\tcontent: serialize( blocks ),\n\t\t\t// `area` is filterable on the server and defaults to `UNCATEGORIZED`\n\t\t\t// if provided value is not allowed.\n\t\t\tarea,\n\t\t};\n\t\tconst templatePart = await saveEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template_part',\n\t\t\trecord\n\t\t);\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t};\n}\n\n/**\n * Retrieves the template part area object.\n *\n * @param {string} area Template part area identifier.\n *\n * @return {{icon: Object, label: string, tagName: string}} Template Part area.\n */\nexport function useTemplatePartArea( area ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\t// FIXME: @wordpress/block-library should not depend on @wordpress/editor.\n\t\t\t// Blocks can be loaded into a *non-post* block editor.\n\t\t\t/* eslint-disable @wordpress/data-no-store-string-literals */\n\t\t\tconst definedAreas =\n\t\t\t\tselect(\n\t\t\t\t\t'core/editor'\n\t\t\t\t).__experimentalGetDefaultTemplatePartAreas();\n\t\t\t/* eslint-enable @wordpress/data-no-store-string-literals */\n\n\t\t\tconst selectedArea = find( definedAreas, { area } );\n\t\t\tconst defaultArea = find( definedAreas, { area: 'uncategorized' } );\n\n\t\t\treturn {\n\t\t\t\ticon: selectedArea?.icon || defaultArea?.icon,\n\t\t\t\tlabel: selectedArea?.label || __( 'Template Part' ),\n\t\t\t\ttagName: selectedArea?.area_tag ?? 'div',\n\t\t\t};\n\t\t},\n\t\t[ area ]\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tTextControl,\n\tFlex,\n\tFlexItem,\n\tButton,\n\tModal,\n} from '@wordpress/components';\n\nexport default function TitleModal( { areaLabel, onClose, onSubmit } ) {\n\t// Restructure onCreate to set the blocks on local state.\n\t// Add modal to confirm title and trigger onCreate.\n\tconst [ title, setTitle ] = useState( __( 'Untitled Template Part' ) );\n\n\tconst submitForCreation = ( event ) => {\n\t\tevent.preventDefault();\n\t\tonSubmit( title );\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ sprintf(\n\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t__( 'Name and create your new %s' ),\n\t\t\t\tareaLabel.toLowerCase()\n\t\t\t) }\n\t\t\tcloseLabel={ __( 'Cancel' ) }\n\t\t\toverlayClassName=\"wp-block-template-part__placeholder-create-new__title-form\"\n\t\t\tonRequestClose={ onClose }\n\t\t>\n\t\t\t<form onSubmit={ submitForCreation }>\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t/>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"wp-block-template-part__placeholder-create-new__title-form-actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tdisabled={ ! title.length }\n\t\t\t\t\t\t\taria-disabled={ ! title.length }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Placeholder, Button, Spinner } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseCreateTemplatePartFromBlocks,\n\tuseTemplatePartArea,\n} from './utils/hooks';\nimport TitleModal from './title-modal';\n\nexport default function TemplatePartPlaceholder( {\n\tarea,\n\tclientId,\n\ttemplatePartId,\n\tonOpenSelectionModal,\n\tsetAttributes,\n} ) {\n\tconst { templateParts, isResolving } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst [ showTitleModal, setShowTitleModal ] = useState( false );\n\tconst areaObject = useTemplatePartArea( area );\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\treturn (\n\t\t<Placeholder\n\t\t\ticon={ areaObject.icon }\n\t\t\tlabel={ areaObject.label }\n\t\t\tinstructions={ sprintf(\n\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t__( 'Choose an existing %s or create a new one.' ),\n\t\t\t\tareaObject.label.toLowerCase()\n\t\t\t) }\n\t\t>\n\t\t\t{ isResolving && <Spinner /> }\n\n\t\t\t{ ! isResolving &&\n\t\t\t\t!! ( templateParts.length || blockPatterns.length ) && (\n\t\t\t\t\t<Button variant=\"primary\" onClick={ onOpenSelectionModal }>\n\t\t\t\t\t\t{ __( 'Choose' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\n\t\t\t{ ! isResolving && (\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetShowTitleModal( true );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Start blank' ) }\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t\t{ showTitleModal && (\n\t\t\t\t<TitleModal\n\t\t\t\t\tareaLabel={ areaObject.label }\n\t\t\t\t\tonClose={ () => setShowTitleModal( false ) }\n\t\t\t\t\tonSubmit={ ( title ) => {\n\t\t\t\t\t\tcreateFromBlocks( [], title );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Placeholder>\n\t);\n}\n","/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\n\n/**\n * Sanitizes the search input string.\n *\n * @param {string} input The search input to normalize.\n *\n * @return {string} The normalized search input.\n */\nfunction normalizeSearchInput( input = '' ) {\n\t// Disregard diacritics.\n\tinput = removeAccents( input );\n\n\t// Trim & Lowercase.\n\tinput = input.trim().toLowerCase();\n\n\treturn input;\n}\n\n/**\n * Get the search rank for a given pattern and a specific search term.\n *\n * @param {Object} pattern     Pattern to rank\n * @param {string} searchValue Search term\n * @return {number} A pattern search rank\n */\nfunction getPatternSearchRank( pattern, searchValue ) {\n\tconst normalizedSearchValue = normalizeSearchInput( searchValue );\n\tconst normalizedTitle = normalizeSearchInput( pattern.title );\n\n\tlet rank = 0;\n\n\tif ( normalizedSearchValue === normalizedTitle ) {\n\t\trank += 30;\n\t} else if ( normalizedTitle.startsWith( normalizedSearchValue ) ) {\n\t\trank += 20;\n\t} else {\n\t\tconst searchTerms = normalizedSearchValue.split( ' ' );\n\t\tconst hasMatchedTerms = searchTerms.every( ( searchTerm ) =>\n\t\t\tnormalizedTitle.includes( searchTerm )\n\t\t);\n\n\t\t// Prefer pattern with every search word in the title.\n\t\tif ( hasMatchedTerms ) {\n\t\t\trank += 10;\n\t\t}\n\t}\n\n\treturn rank;\n}\n\n/**\n * Filters an pattern list given a search term.\n *\n * @param {Array}  patterns    Item list\n * @param {string} searchValue Search input.\n *\n * @return {Array} Filtered pattern list.\n */\nexport function searchPatterns( patterns = [], searchValue = '' ) {\n\tif ( ! searchValue ) {\n\t\treturn patterns;\n\t}\n\n\tconst rankedPatterns = patterns\n\t\t.map( ( pattern ) => {\n\t\t\treturn [ pattern, getPatternSearchRank( pattern, searchValue ) ];\n\t\t} )\n\t\t.filter( ( [ , rank ] ) => rank > 0 );\n\n\trankedPatterns.sort( ( [ , rank1 ], [ , rank2 ] ) => rank2 - rank1 );\n\treturn rankedPatterns.map( ( [ pattern ] ) => pattern );\n}\n","/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\nimport { parse } from '@wordpress/blocks';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport {\n\tSearchControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseCreateTemplatePartFromBlocks,\n} from './utils/hooks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport { searchPatterns } from './utils/search';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\t// We can map template parts to block patters to reuse the BlockPatternsList UI\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tconst partsAsPatterns = templateParts.map( ( templatePart ) => ( {\n\t\t\tname: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\t\t\ttitle: templatePart.title.rendered,\n\t\t\tblocks: parse( templatePart.content.raw ),\n\t\t\ttemplatePart,\n\t\t} ) );\n\n\t\treturn searchPatterns( partsAsPatterns, searchValue );\n\t}, [ templateParts, searchValue ] );\n\tconst shownTemplateParts = useAsyncList( filteredTemplateParts );\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\tconst shownBlockPatterns = useAsyncList( filteredBlockPatterns );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\tconst onTemplatePartSelect = useCallback( ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" inserted.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t\tonClose();\n\t}, [] );\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\tconst hasTemplateParts = !! filteredTemplateParts.length;\n\tconst hasBlockPatterns = !! filteredBlockPatterns.length;\n\n\treturn (\n\t\t<div className=\"block-library-template-part__selection-content\">\n\t\t\t<div className=\"block-library-template-part__selection-search\">\n\t\t\t\t<SearchControl\n\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tlabel={ __( 'Search for replacements' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ hasTemplateParts && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Existing template parts' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredTemplateParts }\n\t\t\t\t\t\tshownPatterns={ shownTemplateParts }\n\t\t\t\t\t\tonClickPattern={ ( pattern ) => {\n\t\t\t\t\t\t\tonTemplatePartSelect( pattern.templatePart );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ hasBlockPatterns && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Patterns' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\t\t\t\tonClickPattern={ ( pattern, blocks ) => {\n\t\t\t\t\t\t\tcreateFromBlocks( blocks, pattern.title );\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! hasTemplateParts && ! hasBlockPatterns && (\n\t\t\t\t<HStack alignment=\"center\">\n\t\t\t\t\t<p>{ __( 'No results found.' ) }</p>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useEntityProp } from '@wordpress/core-data';\nimport { SelectControl, TextControl } from '@wordpress/components';\nimport { sprintf, __ } from '@wordpress/i18n';\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\nexport function TemplatePartAdvancedControls( {\n\ttagName,\n\tsetAttributes,\n\tisEntityAvailable,\n\ttemplatePartId,\n\tdefaultWrapper,\n} ) {\n\tconst [ area, setArea ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t'area',\n\t\ttemplatePartId\n\t);\n\n\tconst [ title, setTitle ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t'title',\n\t\ttemplatePartId\n\t);\n\n\tconst { areaOptions } = useSelect( ( select ) => {\n\t\t// FIXME: @wordpress/block-library should not depend on @wordpress/editor.\n\t\t// Blocks can be loaded into a *non-post* block editor.\n\t\t/* eslint-disable @wordpress/data-no-store-string-literals */\n\t\tconst definedAreas =\n\t\t\tselect( 'core/editor' ).__experimentalGetDefaultTemplatePartAreas();\n\t\t/* eslint-enable @wordpress/data-no-store-string-literals */\n\t\treturn {\n\t\t\tareaOptions: definedAreas.map( ( { label, area: _area } ) => ( {\n\t\t\t\tlabel,\n\t\t\t\tvalue: _area,\n\t\t\t} ) ),\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t{ isEntityAvailable && (\n\t\t\t\t<>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tsetTitle( value );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonFocus={ ( event ) => event.target.select() }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Area' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\toptions={ areaOptions }\n\t\t\t\t\t\tvalue={ area }\n\t\t\t\t\t\tonChange={ setArea }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<SelectControl\n\t\t\t\tlabel={ __( 'HTML element' ) }\n\t\t\t\toptions={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: HTML tag based on area. */\n\t\t\t\t\t\t\t__( 'Default based on area (%s)' ),\n\t\t\t\t\t\t\t`<${ defaultWrapper }>`\n\t\t\t\t\t\t),\n\t\t\t\t\t\tvalue: '',\n\t\t\t\t\t},\n\t\t\t\t\t{ label: '<header>', value: 'header' },\n\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t{ label: '<article>', value: 'article' },\n\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t{ label: '<footer>', value: 'footer' },\n\t\t\t\t\t{ label: '<div>', value: 'div' },\n\t\t\t\t] }\n\t\t\t\tvalue={ tagName || '' }\n\t\t\t\tonChange={ ( value ) => setAttributes( { tagName: value } ) }\n\t\t\t/>\n\t\t</InspectorControls>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { useEntityBlockEditor } from '@wordpress/core-data';\nimport {\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tuseSetting,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\nexport default function TemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings()?.supportsLayout;\n\t}, [] );\n\tconst defaultLayout = useSetting( 'layout' ) || {};\n\tconst usedLayout = !! layout && layout.inherit ? defaultLayout : layout;\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t{ id }\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput,\n\t\tonChange,\n\t\trenderAppender: hasInnerBlocks\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t\t__experimentalLayout: themeSupportsLayout ? usedLayout : undefined,\n\t} );\n\n\treturn <TagName { ...innerBlocksProps } />;\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst header = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18.5 10.5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z\" />\n\t</SVG>\n);\n\nexport default header;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst footer = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\td=\"M18 5.5h-8v8h8.5V6a.5.5 0 00-.5-.5zm-9.5 8h-3V6a.5.5 0 01.5-.5h2.5v8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default footer;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst sidebar = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z\" />\n\t</SVG>\n);\n\nexport default sidebar;\n","/**\n * WordPress dependencies\n */\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { select } from '@wordpress/data';\nimport {\n\theader as headerIcon,\n\tfooter as footerIcon,\n\tsidebar as sidebarIcon,\n\tsymbolFilled as symbolFilledIcon,\n} from '@wordpress/icons';\n\nfunction getTemplatePartIcon( iconName ) {\n\tif ( 'header' === iconName ) {\n\t\treturn headerIcon;\n\t} else if ( 'footer' === iconName ) {\n\t\treturn footerIcon;\n\t} else if ( 'sidebar' === iconName ) {\n\t\treturn sidebarIcon;\n\t}\n\treturn symbolFilledIcon;\n}\n\nexport function enhanceTemplatePartVariations( settings, name ) {\n\tif ( name !== 'core/template-part' ) {\n\t\treturn settings;\n\t}\n\n\tif ( settings.variations ) {\n\t\tconst isActive = ( blockAttributes, variationAttributes ) => {\n\t\t\tconst { area, theme, slug } = blockAttributes;\n\t\t\t// We first check the `area` block attribute which is set during insertion.\n\t\t\t// This property is removed on the creation of a template part.\n\t\t\tif ( area ) return area === variationAttributes.area;\n\t\t\t// Find a matching variation from the created template part\n\t\t\t// by checking the entity's `area` property.\n\t\t\tif ( ! slug ) return false;\n\t\t\tconst entity = select( coreDataStore ).getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\t`${ theme }//${ slug }`\n\t\t\t);\n\t\t\treturn entity?.area === variationAttributes.area;\n\t\t};\n\n\t\tconst variations = settings.variations.map( ( variation ) => {\n\t\t\treturn {\n\t\t\t\t...variation,\n\t\t\t\t...( ! variation.isActive && { isActive } ),\n\t\t\t\t...( typeof variation.icon === 'string' && {\n\t\t\t\t\ticon: getTemplatePartIcon( variation.icon ),\n\t\t\t\t} ),\n\t\t\t};\n\t\t} );\n\n\t\treturn {\n\t\t\t...settings,\n\t\t\tvariations,\n\t\t};\n\t}\n\treturn settings;\n}\n","/**\n * External dependencies\n */\nimport { capitalCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { select } from '@wordpress/data';\nimport { symbolFilled } from '@wordpress/icons';\nimport { addFilter } from '@wordpress/hooks';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport { enhanceTemplatePartVariations } from './variations';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon: symbolFilled,\n\t__experimentalLabel: ( { slug, theme } ) => {\n\t\t// Attempt to find entity title if block is a template part.\n\t\t// Require slug to request, otherwise entity is uncreated and will throw 404.\n\t\tif ( ! slug ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst entity = select( coreDataStore ).getEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template_part',\n\t\t\ttheme + '//' + slug\n\t\t);\n\t\tif ( ! entity ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn (\n\t\t\tdecodeEntities( entity.title?.rendered ) ||\n\t\t\tcapitalCase( entity.slug )\n\t\t);\n\t},\n\tedit,\n};\n\nexport const init = () => {\n\taddFilter(\n\t\t'blocks.registerBlockType',\n\t\t'core/template-part',\n\t\tenhanceTemplatePartVariations\n\t);\n\n\t// Prevent adding template parts inside post templates.\n\tconst DISALLOWED_PARENTS = [ 'core/post-template', 'core/post-content' ];\n\taddFilter(\n\t\t'blockEditor.__unstableCanInsertBlockType',\n\t\t'removeTemplatePartsFromPostTemplates',\n\t\t(\n\t\t\tcanInsert,\n\t\t\tblockType,\n\t\t\trootClientId,\n\t\t\t{ getBlock, getBlockParentsByBlockName }\n\t\t) => {\n\t\t\tif ( blockType.name !== 'core/template-part' ) {\n\t\t\t\treturn canInsert;\n\t\t\t}\n\n\t\t\tfor ( const disallowedParentType of DISALLOWED_PARENTS ) {\n\t\t\t\tconst hasDisallowedParent =\n\t\t\t\t\tgetBlock( rootClientId )?.name === disallowedParentType ||\n\t\t\t\t\tgetBlockParentsByBlockName(\n\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\tdisallowedParentType\n\t\t\t\t\t).length;\n\t\t\t\tif ( hasDisallowedParent ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t);\n\n\treturn initBlock( { name, metadata, settings } );\n};\n","/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tBlockTitle,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\t__experimentalRecursionProvider as RecursionProvider,\n\t__experimentalUseHasRecursion as useHasRecursion,\n} from '@wordpress/block-editor';\nimport { Spinner, Modal, MenuItem } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, createInterpolateElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartPlaceholder from './placeholder';\nimport TemplatePartSelectionModal from './selection-modal';\nimport { TemplatePartAdvancedControls } from './advanced-controls';\nimport TemplatePartInnerBlocks from './inner-blocks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseTemplatePartArea,\n} from './utils/hooks';\n\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n\tisSelected,\n} ) {\n\tconst { slug, theme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\t// Set the postId block attribute if it did not exist,\n\t// but wait until the inner blocks have loaded to allow\n\t// new edits to trigger this.\n\tconst { isResolved, innerBlocks, isMissing, area } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlocks } = select( blockEditorStore );\n\n\t\t\tconst getEntityArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\ttemplatePartId,\n\t\t\t];\n\t\t\tconst entityRecord = templatePartId\n\t\t\t\t? getEditedEntityRecord( ...getEntityArgs )\n\t\t\t\t: null;\n\t\t\tconst _area = entityRecord?.area || attributes.area;\n\t\t\tconst hasResolvedEntity = templatePartId\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tgetEntityArgs\n\t\t\t\t  )\n\t\t\t\t: false;\n\n\t\t\treturn {\n\t\t\t\tinnerBlocks: getBlocks( clientId ),\n\t\t\t\tisResolved: hasResolvedEntity,\n\t\t\t\tisMissing: hasResolvedEntity && isEmpty( entityRecord ),\n\t\t\t\tarea: _area,\n\t\t\t};\n\t\t},\n\t\t[ templatePartId, clientId ]\n\t);\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst hasReplacements = !! templateParts.length || !! blockPatterns.length;\n\tconst areaObject = useTemplatePartArea( area );\n\tconst blockProps = useBlockProps();\n\tconst isPlaceholder = ! slug;\n\tconst isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;\n\tconst TagName = tagName || areaObject.tagName;\n\n\t// The `isSelected` check ensures the `BlockSettingsMenuControls` fill\n\t// doesn't render multiple times. The block controls has similar internal check.\n\tconst canReplace =\n\t\tisSelected &&\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\n\n\t// We don't want to render a missing state if we have any inner blocks.\n\t// A new template part is automatically created if we have any inner blocks but no entity.\n\tif (\n\t\tinnerBlocks.length === 0 &&\n\t\t( ( slug && ! theme ) || ( slug && isMissing ) )\n\t) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Template part slug */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Template part has been deleted or is unavailable: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslug\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tif ( isEntityAvailable && hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RecursionProvider uniqueId={ templatePartId }>\n\t\t\t\t<TemplatePartAdvancedControls\n\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t/>\n\t\t\t\t{ isPlaceholder && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<TemplatePartPlaceholder\n\t\t\t\t\t\t\tarea={ attributes.area }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tonOpenSelectionModal={ () =>\n\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t\t{ canReplace && (\n\t\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t\t{ () => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\t__( 'Replace <BlockTitle />' ),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tBlockTitle: (\n\t\t\t\t\t\t\t\t\t\t\t<BlockTitle\n\t\t\t\t\t\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\t\t\t\t\t\tmaximumLength={ 25 }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</BlockSettingsMenuControls>\n\t\t\t\t) }\n\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t<TemplatePartInnerBlocks\n\t\t\t\t\t\ttagName={ TagName }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tpostId={ templatePartId }\n\t\t\t\t\t\thasInnerBlocks={ innerBlocks.length > 0 }\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isPlaceholder && ! isResolved && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t\t{ isTemplatePartSelectionOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\toverlayClassName=\"block-editor-template-part__selection-modal\"\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t\t\t__( 'Choose a %s' ),\n\t\t\t\t\t\tareaObject.label.toLowerCase()\n\t\t\t\t\t) }\n\t\t\t\t\tcloseLabel={ __( 'Cancel' ) }\n\t\t\t\t\tonRequestClose={ () =>\n\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<TemplatePartSelectionModal\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tonClose={ () =>\n\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst tag = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M6.08 10.103h2.914L9.657 12h1.417L8.23 4H6.846L4 12h1.417l.663-1.897Zm1.463-4.137.994 2.857h-2l1.006-2.857ZM11 16H4v-1.5h7V16Zm1 0h8v-1.5h-8V16Zm-4 4H4v-1.5h4V20Zm7-1.5V20H9v-1.5h6Z\" />\n\t</SVG>\n);\n\nexport default tag;\n","/**\n * WordPress dependencies\n */\nimport { termDescription 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","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseBlockProps,\n\tBlockControls,\n\tAlignmentControl,\n} from '@wordpress/block-editor';\n\nexport default function TermDescriptionEdit( {\n\tattributes,\n\tsetAttributes,\n\tmergedStyle,\n} ) {\n\tconst { textAlign } = attributes;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t\tstyle: mergedStyle,\n\t} );\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<div className=\"wp-block-term-description__placeholder\">\n\t\t\t\t\t<span>{ __( 'Term Description' ) }</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/columns' ],\n\t\t\ttransform: ( { className, columns, content, width } ) =>\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/columns',\n\t\t\t\t\t{\n\t\t\t\t\t\talign:\n\t\t\t\t\t\t\t'wide' === width || 'full' === width\n\t\t\t\t\t\t\t\t? width\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t},\n\t\t\t\t\tcontent.map( ( { children } ) =>\n\t\t\t\t\t\tcreateBlock( 'core/column', {}, [\n\t\t\t\t\t\t\tcreateBlock( 'core/paragraph', {\n\t\t\t\t\t\t\t\tcontent: children,\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},\n\t],\n};\n\nexport default transforms;\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\ttransforms,\n\tgetEditWrapperProps( attributes ) {\n\t\tconst { width } = attributes;\n\t\tif ( 'wide' === width || 'full' === width ) {\n\t\t\treturn { 'data-align': width };\n\t\t}\n\t},\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { PanelBody, RangeControl } from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockAlignmentToolbar,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport deprecated from '@wordpress/deprecated';\n\nexport default function TextColumnsEdit( { attributes, setAttributes } ) {\n\tconst { width, content, columns } = attributes;\n\n\tdeprecated( 'The Text Columns block', {\n\t\tsince: '5.3',\n\t\talternative: 'the Columns block',\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<BlockAlignmentToolbar\n\t\t\t\t\tvalue={ width }\n\t\t\t\t\tonChange={ ( nextWidth ) =>\n\t\t\t\t\t\tsetAttributes( { width: nextWidth } )\n\t\t\t\t\t}\n\t\t\t\t\tcontrols={ [ 'center', 'wide', 'full' ] }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\tvalue={ columns }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { columns: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ 2 }\n\t\t\t\t\t\tmax={ 4 }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<div\n\t\t\t\t{ ...useBlockProps( {\n\t\t\t\t\tclassName: `align${ width } columns-${ columns }`,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ Array.from( { length: columns } ).map( ( _, index ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"wp-block-column\"\n\t\t\t\t\t\t\tkey={ `column-${ index }` }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\t\t\t\tvalue={ get( content, [ index, 'children' ] ) }\n\t\t\t\t\t\t\t\tonChange={ ( nextContent ) => {\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t\t...content.slice( 0, index ),\n\t\t\t\t\t\t\t\t\t\t\t{ children: nextContent },\n\t\t\t\t\t\t\t\t\t\t\t...content.slice( index + 1 ),\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t\t// translators: %d: column index (starting with 1)\n\t\t\t\t\t\t\t\t\t__( 'Column %d text' ),\n\t\t\t\t\t\t\t\t\tindex + 1\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tplaceholder={ __( 'New Column' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n","/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { width, content, columns } = attributes;\n\treturn (\n\t\t<div\n\t\t\t{ ...useBlockProps.save( {\n\t\t\t\tclassName: `align${ width } columns-${ columns }`,\n\t\t\t} ) }\n\t\t>\n\t\t\t{ Array.from( { length: columns } ).map( ( _, index ) => (\n\t\t\t\t<div className=\"wp-block-column\" key={ `column-${ index }` }>\n\t\t\t\t\t<RichText.Content\n\t\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\t\tvalue={ get( content, [ index, 'children' ] ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) ) }\n\t\t</div>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst verse = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M17.8 2l-.9.3c-.1 0-3.6 1-5.2 2.1C10 5.5 9.3 6.5 8.9 7.1c-.6.9-1.7 4.7-1.7 6.3l-.9 2.3c-.2.4 0 .8.4 1 .1 0 .2.1.3.1.3 0 .6-.2.7-.5l.6-1.5c.3 0 .7-.1 1.2-.2.7-.1 1.4-.3 2.2-.5.8-.2 1.6-.5 2.4-.8.7-.3 1.4-.7 1.9-1.2s.8-1.2 1-1.9c.2-.7.3-1.6.4-2.4.1-.8.1-1.7.2-2.5 0-.8.1-1.5.2-2.1V2zm-1.9 5.6c-.1.8-.2 1.5-.3 2.1-.2.6-.4 1-.6 1.3-.3.3-.8.6-1.4.9-.7.3-1.4.5-2.2.8-.6.2-1.3.3-1.8.4L15 7.5c.3-.3.6-.7 1-1.1 0 .4 0 .8-.1 1.2zM6 20h8v-1.5H6V20z\" />\n\t</SVG>\n);\n\nexport default verse;\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport migrateFontFamily from '../utils/migrate-font-family';\n\nconst v1 = {\n\tattributes: {\n\t\tcontent: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'pre',\n\t\t\tdefault: '',\n\t\t},\n\t\ttextAlign: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsave( { attributes } ) {\n\t\tconst { textAlign, content } = attributes;\n\n\t\treturn (\n\t\t\t<RichText.Content\n\t\t\t\ttagName=\"pre\"\n\t\t\t\tstyle={ { textAlign } }\n\t\t\t\tvalue={ content }\n\t\t\t/>\n\t\t);\n\t},\n};\n\nconst v2 = {\n\tattributes: {\n\t\tcontent: {\n\t\t\ttype: 'string',\n\t\t\tsource: 'html',\n\t\t\tselector: 'pre',\n\t\t\tdefault: '',\n\t\t\t__unstablePreserveWhiteSpace: true,\n\t\t\t__experimentalRole: 'content',\n\t\t},\n\t\ttextAlign: {\n\t\t\ttype: 'string',\n\t\t},\n\t},\n\tsupports: {\n\t\tanchor: true,\n\t\tcolor: {\n\t\t\tgradients: true,\n\t\t\tlink: true,\n\t\t},\n\t\ttypography: {\n\t\t\tfontSize: true,\n\t\t\t__experimentalFontFamily: true,\n\t\t},\n\t\tspacing: {\n\t\t\tpadding: true,\n\t\t},\n\t},\n\tsave( { attributes } ) {\n\t\tconst { textAlign, content } = attributes;\n\n\t\tconst className = classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} );\n\n\t\treturn (\n\t\t\t<pre { ...useBlockProps.save( { className } ) }>\n\t\t\t\t<RichText.Content value={ content } />\n\t\t\t</pre>\n\t\t);\n\t},\n\tmigrate: migrateFontFamily,\n\tisEligible( { style } ) {\n\t\treturn style?.typography?.fontFamily;\n\t},\n};\n\n/**\n * New deprecations need to be placed first\n * for them to have higher priority.\n *\n * Old deprecations may need to be updated as well.\n *\n * See block-deprecation.md\n */\nexport default [ v2, v1 ];\n","/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/paragraph' ],\n\t\t\ttransform: ( attributes ) =>\n\t\t\t\tcreateBlock( 'core/verse', attributes ),\n\t\t},\n\t],\n\tto: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tblocks: [ 'core/paragraph' ],\n\t\t\ttransform: ( attributes ) =>\n\t\t\t\tcreateBlock( 'core/paragraph', attributes ),\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { verse 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\t/* eslint-disable @wordpress/i18n-no-collapsible-whitespace */\n\t\t\t// translators: Sample content for the Verse block. Can be replaced with a more locale-adequate work.\n\t\t\tcontent: __(\n\t\t\t\t'WHAT was he doing, the great god Pan,\\n\tDown in the reeds by the river?\\nSpreading ruin and scattering ban,\\nSplashing and paddling with hoofs of a goat,\\nAnd breaking the golden lilies afloat\\n    With the dragon-fly on the river.'\n\t\t\t),\n\t\t\t/* eslint-enable @wordpress/i18n-no-collapsible-whitespace */\n\t\t},\n\t},\n\ttransforms,\n\tdeprecated,\n\tmerge( attributes, attributesToMerge ) {\n\t\treturn {\n\t\t\tcontent: attributes.content + attributesToMerge.content,\n\t\t};\n\t},\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tRichText,\n\tBlockControls,\n\tAlignmentToolbar,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\n\nexport default function VerseEdit( {\n\tattributes,\n\tsetAttributes,\n\tmergeBlocks,\n\tonRemove,\n\tstyle,\n} ) {\n\tconst { textAlign, content } = attributes;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t\tstyle,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<AlignmentToolbar\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<RichText\n\t\t\t\ttagName=\"pre\"\n\t\t\t\tidentifier=\"content\"\n\t\t\t\tpreserveWhiteSpace\n\t\t\t\tvalue={ content }\n\t\t\t\tonChange={ ( nextContent ) => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: nextContent,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\taria-label={ __( 'Verse text' ) }\n\t\t\t\tplaceholder={ __( 'Write verse…' ) }\n\t\t\t\tonRemove={ onRemove }\n\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\ttextAlign={ textAlign }\n\t\t\t\t{ ...blockProps }\n\t\t\t\t__unstablePastePlainText\n\t\t\t/>\n\t\t</>\n\t);\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { textAlign, content } = attributes;\n\n\tconst className = classnames( {\n\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t} );\n\n\treturn (\n\t\t<pre { ...useBlockProps.save( { className } ) }>\n\t\t\t<RichText.Content value={ content } />\n\t\t</pre>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nconst video = (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t<Path d=\"M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h13.4c.4 0 .8.4.8.8v13.4zM10 15l5-3-5-3v6z\" />\n\t</SVG>\n);\n\nexport default video;\n","/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { ToggleControl, SelectControl } from '@wordpress/components';\nimport { useMemo, useCallback, Platform } from '@wordpress/element';\n\nconst options = [\n\t{ value: 'auto', label: __( 'Auto' ) },\n\t{ value: 'metadata', label: __( 'Metadata' ) },\n\t{ value: 'none', label: _x( 'None', 'Preload value' ) },\n];\n\nconst VideoSettings = ( { setAttributes, attributes } ) => {\n\tconst { autoplay, controls, loop, muted, playsInline, preload } =\n\t\tattributes;\n\n\tconst autoPlayHelpText = __(\n\t\t'Autoplay may cause usability issues for some users.'\n\t);\n\tconst getAutoplayHelp = Platform.select( {\n\t\tweb: useCallback( ( checked ) => {\n\t\t\treturn checked ? autoPlayHelpText : null;\n\t\t}, [] ),\n\t\tnative: autoPlayHelpText,\n\t} );\n\n\tconst toggleFactory = useMemo( () => {\n\t\tconst toggleAttribute = ( attribute ) => {\n\t\t\treturn ( newValue ) => {\n\t\t\t\tsetAttributes( { [ attribute ]: newValue } );\n\t\t\t};\n\t\t};\n\n\t\treturn {\n\t\t\tautoplay: toggleAttribute( 'autoplay' ),\n\t\t\tloop: toggleAttribute( 'loop' ),\n\t\t\tmuted: toggleAttribute( 'muted' ),\n\t\t\tcontrols: toggleAttribute( 'controls' ),\n\t\t\tplaysInline: toggleAttribute( 'playsInline' ),\n\t\t};\n\t}, [] );\n\n\tconst onChangePreload = useCallback( ( value ) => {\n\t\tsetAttributes( { preload: value } );\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Autoplay' ) }\n\t\t\t\tonChange={ toggleFactory.autoplay }\n\t\t\t\tchecked={ autoplay }\n\t\t\t\thelp={ getAutoplayHelp }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Loop' ) }\n\t\t\t\tonChange={ toggleFactory.loop }\n\t\t\t\tchecked={ loop }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Muted' ) }\n\t\t\t\tonChange={ toggleFactory.muted }\n\t\t\t\tchecked={ muted }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Playback controls' ) }\n\t\t\t\tonChange={ toggleFactory.controls }\n\t\t\t\tchecked={ controls }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\tlabel={ __( 'Play inline' ) }\n\t\t\t\tonChange={ toggleFactory.playsInline }\n\t\t\t\tchecked={ playsInline }\n\t\t\t/>\n\t\t\t<SelectControl\n\t\t\t\tlabel={ __( 'Preload' ) }\n\t\t\t\tvalue={ preload }\n\t\t\t\tonChange={ onChangePreload }\n\t\t\t\toptions={ options }\n\t\t\t\thideCancelButton={ true }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default VideoSettings;\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst media = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h13.4c.4 0 .8.4.8.8v13.4zM10 15l5-3-5-3v6z\" />\n\t</SVG>\n);\n\nexport default media;\n","/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tNavigableMenu,\n\tMenuItem,\n\tFormFileUpload,\n\tMenuGroup,\n\tToolbarButton,\n\tDropdown,\n\tSVG,\n\tRect,\n\tPath,\n\tButton,\n\tTextControl,\n\tSelectControl,\n} from '@wordpress/components';\nimport {\n\tMediaUpload,\n\tMediaUploadCheck,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { upload, media } from '@wordpress/icons';\nimport { useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { getFilename } from '@wordpress/url';\n\nconst ALLOWED_TYPES = [ 'text/vtt' ];\n\nconst DEFAULT_KIND = 'subtitles';\n\nconst KIND_OPTIONS = [\n\t{ label: __( 'Subtitles' ), value: 'subtitles' },\n\t{ label: __( 'Captions' ), value: 'captions' },\n\t{ label: __( 'Descriptions' ), value: 'descriptions' },\n\t{ label: __( 'Chapters' ), value: 'chapters' },\n\t{ label: __( 'Metadata' ), value: 'metadata' },\n];\n\nconst captionIcon = (\n\t<SVG width=\"18\" height=\"14\" viewBox=\"0 0 18 14\" role=\"img\" fill=\"none\">\n\t\t<Rect\n\t\t\tx=\"0.75\"\n\t\t\ty=\"0.75\"\n\t\t\twidth=\"16.5\"\n\t\t\theight=\"12.5\"\n\t\t\trx=\"1.25\"\n\t\t\tstroke=\"black\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t\tfill=\"none\"\n\t\t/>\n\t\t<Path d=\"M3 7H15\" stroke=\"black\" strokeWidth=\"1.5\" />\n\t\t<Path d=\"M3 10L15 10\" stroke=\"black\" strokeWidth=\"1.5\" />\n\t</SVG>\n);\n\nfunction TrackList( { tracks, onEditPress } ) {\n\tlet content;\n\tif ( tracks.length === 0 ) {\n\t\tcontent = (\n\t\t\t<p className=\"block-library-video-tracks-editor__tracks-informative-message\">\n\t\t\t\t{ __(\n\t\t\t\t\t'Tracks can be subtitles, captions, chapters, or descriptions. They help make your content more accessible to a wider range of users.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t);\n\t} else {\n\t\tcontent = tracks.map( ( track, index ) => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={ index }\n\t\t\t\t\tclassName=\"block-library-video-tracks-editor__track-list-track\"\n\t\t\t\t>\n\t\t\t\t\t<span>{ track.label } </span>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => onEditPress( index ) }\n\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t/* translators: %s: Label of the video text track e.g: \"French subtitles\" */\n\t\t\t\t\t\t\t__( 'Edit %s' ),\n\t\t\t\t\t\t\ttrack.label\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t}\n\treturn (\n\t\t<MenuGroup\n\t\t\tlabel={ __( 'Text tracks' ) }\n\t\t\tclassName=\"block-library-video-tracks-editor__track-list\"\n\t\t>\n\t\t\t{ content }\n\t\t</MenuGroup>\n\t);\n}\n\nfunction SingleTrackEditor( { track, onChange, onClose, onRemove } ) {\n\tconst { src = '', label = '', srcLang = '', kind = DEFAULT_KIND } = track;\n\tconst fileName = src.startsWith( 'blob:' ) ? '' : getFilename( src ) || '';\n\treturn (\n\t\t<NavigableMenu>\n\t\t\t<div className=\"block-library-video-tracks-editor__single-track-editor\">\n\t\t\t\t<span className=\"block-library-video-tracks-editor__single-track-editor-edit-track-label\">\n\t\t\t\t\t{ __( 'Edit track' ) }\n\t\t\t\t</span>\n\t\t\t\t<span>\n\t\t\t\t\t{ __( 'File' ) }: <b>{ fileName }</b>\n\t\t\t\t</span>\n\t\t\t\t<div className=\"block-library-video-tracks-editor__single-track-editor-label-language\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t/* eslint-disable jsx-a11y/no-autofocus */\n\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t/* eslint-enable jsx-a11y/no-autofocus */\n\t\t\t\t\t\tonChange={ ( newLabel ) =>\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t...track,\n\t\t\t\t\t\t\t\tlabel: newLabel,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\thelp={ __( 'Title of track' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tonChange={ ( newSrcLang ) =>\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t...track,\n\t\t\t\t\t\t\t\tsrcLang: newSrcLang,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlabel={ __( 'Source language' ) }\n\t\t\t\t\t\tvalue={ srcLang }\n\t\t\t\t\t\thelp={ __( 'Language tag (en, fr, etc.)' ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<SelectControl\n\t\t\t\t\tclassName=\"block-library-video-tracks-editor__single-track-editor-kind-select\"\n\t\t\t\t\toptions={ KIND_OPTIONS }\n\t\t\t\t\tvalue={ kind }\n\t\t\t\t\tlabel={ __( 'Kind' ) }\n\t\t\t\t\tonChange={ ( newKind ) => {\n\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t...track,\n\t\t\t\t\t\t\tkind: newKind,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<div className=\"block-library-video-tracks-editor__single-track-editor-buttons-container\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tconst changes = {};\n\t\t\t\t\t\t\tlet hasChanges = false;\n\t\t\t\t\t\t\tif ( label === '' ) {\n\t\t\t\t\t\t\t\tchanges.label = __( 'English' );\n\t\t\t\t\t\t\t\thasChanges = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( srcLang === '' ) {\n\t\t\t\t\t\t\t\tchanges.srcLang = 'en';\n\t\t\t\t\t\t\t\thasChanges = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( track.kind === undefined ) {\n\t\t\t\t\t\t\t\tchanges.kind = DEFAULT_KIND;\n\t\t\t\t\t\t\t\thasChanges = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( hasChanges ) {\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t...track,\n\t\t\t\t\t\t\t\t\t...changes,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Close' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button isDestructive variant=\"link\" onClick={ onRemove }>\n\t\t\t\t\t\t{ __( 'Remove track' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NavigableMenu>\n\t);\n}\n\nexport default function TracksEditor( { tracks = [], onChange } ) {\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings().mediaUpload;\n\t}, [] );\n\tconst [ trackBeingEdited, setTrackBeingEdited ] = useState( null );\n\n\tif ( ! mediaUpload ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<Dropdown\n\t\t\tcontentClassName=\"block-library-video-tracks-editor\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tlabel={ __( 'Text tracks' ) }\n\t\t\t\t\tshowTooltip\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\ticon={ captionIcon }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\trenderContent={ () => {\n\t\t\t\tif ( trackBeingEdited !== null ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SingleTrackEditor\n\t\t\t\t\t\t\ttrack={ tracks[ trackBeingEdited ] }\n\t\t\t\t\t\t\tonChange={ ( newTrack ) => {\n\t\t\t\t\t\t\t\tconst newTracks = [ ...tracks ];\n\t\t\t\t\t\t\t\tnewTracks[ trackBeingEdited ] = newTrack;\n\t\t\t\t\t\t\t\tonChange( newTracks );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonClose={ () => setTrackBeingEdited( null ) }\n\t\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\t\tonChange(\n\t\t\t\t\t\t\t\t\ttracks.filter(\n\t\t\t\t\t\t\t\t\t\t( _track, index ) =>\n\t\t\t\t\t\t\t\t\t\t\tindex !== trackBeingEdited\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\tsetTrackBeingEdited( null );\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\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<NavigableMenu>\n\t\t\t\t\t\t\t<TrackList\n\t\t\t\t\t\t\t\ttracks={ tracks }\n\t\t\t\t\t\t\t\tonEditPress={ setTrackBeingEdited }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<MenuGroup\n\t\t\t\t\t\t\t\tclassName=\"block-library-video-tracks-editor__add-tracks-container\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Add tracks' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\t\tonSelect={ ( { url } ) => {\n\t\t\t\t\t\t\t\t\t\tconst trackIndex = tracks.length;\n\t\t\t\t\t\t\t\t\t\tonChange( [ ...tracks, { src: url } ] );\n\t\t\t\t\t\t\t\t\t\tsetTrackBeingEdited( trackIndex );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tallowedTypes={ ALLOWED_TYPES }\n\t\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\ticon={ media }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\t\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst files = event.target.files;\n\t\t\t\t\t\t\t\t\t\t\tconst trackIndex = tracks.length;\n\t\t\t\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\t\t\t\tallowedTypes: ALLOWED_TYPES,\n\t\t\t\t\t\t\t\t\t\t\t\tfilesList: files,\n\t\t\t\t\t\t\t\t\t\t\t\tonFileChange: ( [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ url },\n\t\t\t\t\t\t\t\t\t\t\t\t] ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst newTracks = [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...tracks,\n\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t! newTracks[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttrackIndex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewTracks[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttrackIndex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t] = {};\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tnewTracks[ trackIndex ] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...tracks[ trackIndex ],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc: url,\n\t\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange( newTracks );\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetTrackBeingEdited(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttrackIndex\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taccept=\".vtt,text/vtt\"\n\t\t\t\t\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\topenFileDialog();\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n","export default function Tracks( { tracks = [] } ) {\n\treturn tracks.map( ( track ) => {\n\t\treturn <track key={ track.src } { ...track } />;\n\t} );\n}\n","/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL } from '@wordpress/blob';\nimport {\n\tBaseControl,\n\tButton,\n\tDisabled,\n\tPanelBody,\n\tSpinner,\n\tPlaceholder,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaUpload,\n\tMediaUploadCheck,\n\tMediaReplaceFlow,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { video as icon } from '@wordpress/icons';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport VideoCommonSettings from './edit-common-settings';\nimport TracksEditor from './tracks-editor';\nimport Tracks from './tracks';\n\n// Much of this description is duplicated from MediaPlaceholder.\nconst placeholder = ( content ) => {\n\treturn (\n\t\t<Placeholder\n\t\t\tclassName=\"block-editor-media-placeholder\"\n\t\t\twithIllustration={ true }\n\t\t\ticon={ icon }\n\t\t\tlabel={ __( 'Video' ) }\n\t\t\tinstructions={ __(\n\t\t\t\t'Upload a video file, pick one from your media library, or add one with a URL.'\n\t\t\t) }\n\t\t>\n\t\t\t{ content }\n\t\t</Placeholder>\n\t);\n};\n\nconst ALLOWED_MEDIA_TYPES = [ 'video' ];\nconst VIDEO_POSTER_ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nfunction VideoEdit( {\n\tisSelected,\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tonReplace,\n} ) {\n\tconst instanceId = useInstanceId( VideoEdit );\n\tconst videoPlayer = useRef();\n\tconst posterImageButton = useRef();\n\tconst { id, caption, controls, poster, src, tracks } = attributes;\n\tconst isTemporaryVideo = ! id && isBlobURL( src );\n\tconst mediaUpload = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().mediaUpload,\n\t\t[]\n\t);\n\n\tuseEffect( () => {\n\t\tif ( ! id && isBlobURL( src ) ) {\n\t\t\tconst file = getBlobByURL( src );\n\t\t\tif ( file ) {\n\t\t\t\tmediaUpload( {\n\t\t\t\t\tfilesList: [ file ],\n\t\t\t\t\tonFileChange: ( [ media ] ) => onSelectVideo( media ),\n\t\t\t\t\tonError: onUploadError,\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\t// Placeholder may be rendered.\n\t\tif ( videoPlayer.current ) {\n\t\t\tvideoPlayer.current.load();\n\t\t}\n\t}, [ poster ] );\n\n\tfunction onSelectVideo( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error\n\t\t\t// previous attributes should be removed\n\t\t\t// because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tsrc: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tposter: undefined,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\t// Sets the block's attribute and updates the edit component from the\n\t\t// selected media.\n\t\tsetAttributes( {\n\t\t\tsrc: media.url,\n\t\t\tid: media.id,\n\t\t\tposter:\n\t\t\t\tmedia.image?.src !== media.icon ? media.image?.src : undefined,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newSrc ) {\n\t\tif ( newSrc !== src ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url: newSrc },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAttributes( { src: newSrc, id: undefined, poster: undefined } );\n\t\t}\n\t}\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': isTemporaryVideo,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\tif ( ! src ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tfunction onSelectPoster( image ) {\n\t\tsetAttributes( { poster: image.url } );\n\t}\n\n\tfunction onRemovePoster() {\n\t\tsetAttributes( { poster: undefined } );\n\n\t\t// Move focus back to the Media Upload button.\n\t\tposterImageButton.current.focus();\n\t}\n\n\tconst videoPosterDescription = `video-block__poster-image-description-${ instanceId }`;\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<TracksEditor\n\t\t\t\t\ttracks={ tracks }\n\t\t\t\t\tonChange={ ( newTracks ) => {\n\t\t\t\t\t\tsetAttributes( { tracks: newTracks } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t/>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<BaseControl className=\"editor-video-poster-control\">\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Poster image' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\ttitle={ __( 'Select poster image' ) }\n\t\t\t\t\t\t\t\tonSelect={ onSelectPoster }\n\t\t\t\t\t\t\t\tallowedTypes={\n\t\t\t\t\t\t\t\t\tVIDEO_POSTER_ALLOWED_MEDIA_TYPES\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\tref={ posterImageButton }\n\t\t\t\t\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\t\t\t\t\tvideoPosterDescription\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ ! poster\n\t\t\t\t\t\t\t\t\t\t\t? __( 'Select' )\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Replace' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p id={ videoPosterDescription } hidden>\n\t\t\t\t\t\t\t\t{ poster\n\t\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: poster image URL. */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'The current poster image url is %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\tposter\n\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t'There is no poster image currently selected'\n\t\t\t\t\t\t\t\t\t  ) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t{ !! poster && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tonClick={ onRemovePoster }\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /*\n\t\t\t\t\tDisable the video tag if the block is not selected\n\t\t\t\t\tso the user clicking on it won't play the\n\t\t\t\t\tvideo when the controls are enabled.\n\t\t\t\t*/ }\n\t\t\t\t<Disabled isDisabled={ ! isSelected }>\n\t\t\t\t\t<video\n\t\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\t\tposter={ poster }\n\t\t\t\t\t\tsrc={ src }\n\t\t\t\t\t\tref={ videoPlayer }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tracks tracks={ tracks } />\n\t\t\t\t\t</video>\n\t\t\t\t</Disabled>\n\t\t\t\t{ isTemporaryVideo && <Spinner /> }\n\t\t\t\t{ ( ! RichText.isEmpty( caption ) || isSelected ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tclassName={ __experimentalGetElementClassName(\n\t\t\t\t\t\t\t'caption'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\taria-label={ __( 'Video caption text' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Add caption' ) }\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { caption: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinlineToolbar\n\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\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</figure>\n\t\t</>\n\t);\n}\n\nexport default VideoEdit;\n","/**\n * WordPress dependencies\n */\nimport { createBlobURL } from '@wordpress/blob';\nimport { createBlock } from '@wordpress/blocks';\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'files',\n\t\t\tisMatch( files ) {\n\t\t\t\treturn (\n\t\t\t\t\tfiles.length === 1 &&\n\t\t\t\t\tfiles[ 0 ].type.indexOf( 'video/' ) === 0\n\t\t\t\t);\n\t\t\t},\n\t\t\ttransform( files ) {\n\t\t\t\tconst file = files[ 0 ];\n\t\t\t\t// We don't need to upload the media directly here\n\t\t\t\t// It's already done as part of the `componentDidMount`\n\t\t\t\t// in the video block\n\t\t\t\tconst block = createBlock( 'core/video', {\n\t\t\t\t\tsrc: createBlobURL( file ),\n\t\t\t\t} );\n\t\t\t\treturn block;\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'shortcode',\n\t\t\ttag: 'video',\n\t\t\tattributes: {\n\t\t\t\tsrc: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( {\n\t\t\t\t\t\tnamed: { src, mp4, m4v, webm, ogv, flv },\n\t\t\t\t\t} ) => {\n\t\t\t\t\t\treturn src || mp4 || m4v || webm || ogv || flv;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tposter: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( { named: { poster } } ) => {\n\t\t\t\t\t\treturn poster;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tloop: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( { named: { loop } } ) => {\n\t\t\t\t\t\treturn loop;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tautoplay: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( { named: { autoplay } } ) => {\n\t\t\t\t\t\treturn autoplay;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tpreload: {\n\t\t\t\t\ttype: 'string',\n\t\t\t\t\tshortcode: ( { named: { preload } } ) => {\n\t\t\t\t\t\treturn preload;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default transforms;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { video 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\tsrc: 'https://upload.wikimedia.org/wikipedia/commons/c/ca/Wood_thrush_in_Central_Park_switch_sides_%2816510%29.webm',\n\t\t\t// translators: Caption accompanying a video of the wood thrush singing, which serves as an example for the Video block.\n\t\t\tcaption: __( 'Wood thrush singing in Central Park, NYC.' ),\n\t\t},\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n","/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport Tracks from './tracks';\n\nexport default function save( { attributes } ) {\n\tconst {\n\t\tautoplay,\n\t\tcaption,\n\t\tcontrols,\n\t\tloop,\n\t\tmuted,\n\t\tposter,\n\t\tpreload,\n\t\tsrc,\n\t\tplaysInline,\n\t\ttracks,\n\t} = attributes;\n\treturn (\n\t\t<figure { ...useBlockProps.save() }>\n\t\t\t{ src && (\n\t\t\t\t<video\n\t\t\t\t\tautoPlay={ autoplay }\n\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\tloop={ loop }\n\t\t\t\t\tmuted={ muted }\n\t\t\t\t\tposter={ poster }\n\t\t\t\t\tpreload={ preload !== 'metadata' ? preload : undefined }\n\t\t\t\t\tsrc={ src }\n\t\t\t\t\tplaysInline={ playsInline }\n\t\t\t\t>\n\t\t\t\t\t<Tracks tracks={ tracks } />\n\t\t\t\t</video>\n\t\t\t) }\n\t\t\t{ ! RichText.isEmpty( caption ) && (\n\t\t\t\t<RichText.Content\n\t\t\t\t\tclassName={ __experimentalGetElementClassName( 'caption' ) }\n\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\tvalue={ caption }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</figure>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport {\n\tsetDefaultBlockName,\n\tsetFreeformContentHandlerName,\n\tsetUnregisteredTypeHandlerName,\n\tsetGroupingBlockName,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\n// When IS_GUTENBERG_PLUGIN is set to false, imports of experimental blocks\n// are transformed by packages/block-library/src/index.js as follows:\n//    import * as experimentalBlock from './experimental-block'\n// becomes\n//    const experimentalBlock = null;\n// This enables webpack to eliminate the experimental blocks code from the\n// production build to make the final bundle smaller.\n//\n// See https://github.com/WordPress/gutenberg/pull/40655 for more context.\nimport * as archives from './archives';\nimport * as avatar from './avatar';\nimport * as audio from './audio';\nimport * as button from './button';\nimport * as buttons from './buttons';\nimport * as calendar from './calendar';\nimport * as categories from './categories';\nimport * as classic from './freeform';\nimport * as code from './code';\nimport * as column from './column';\nimport * as columns from './columns';\nimport * as comments from './comments';\nimport * as commentAuthorAvatar from './comment-author-avatar';\nimport * as commentAuthorName from './comment-author-name';\nimport * as commentContent from './comment-content';\nimport * as commentDate from './comment-date';\nimport * as commentEditLink from './comment-edit-link';\nimport * as commentReplyLink from './comment-reply-link';\nimport * as commentTemplate from './comment-template';\nimport * as commentsPaginationPrevious from './comments-pagination-previous';\nimport * as commentsPagination from './comments-pagination';\nimport * as commentsPaginationNext from './comments-pagination-next';\nimport * as commentsPaginationNumbers from './comments-pagination-numbers';\nimport * as commentsTitle from './comments-title';\nimport * as cover from './cover';\nimport * as embed from './embed';\nimport * as file from './file';\nimport * as gallery from './gallery';\nimport * as group from './group';\nimport * as heading from './heading';\nimport * as homeLink from './home-link';\nimport * as html from './html';\nimport * as image from './image';\nimport * as latestComments from './latest-comments';\nimport * as latestPosts from './latest-posts';\nimport * as list from './list';\nimport * as listItem from './list-item';\nimport * as logInOut from './loginout';\nimport * as mediaText from './media-text';\nimport * as missing from './missing';\nimport * as more from './more';\nimport * as navigation from './navigation';\nimport * as navigationLink from './navigation-link';\nimport * as navigationSubmenu from './navigation-submenu';\nimport * as nextpage from './nextpage';\nimport * as pattern from './pattern';\nimport * as pageList from './page-list';\nimport * as paragraph from './paragraph';\nimport * as postAuthor from './post-author';\nimport * as postAuthorName from './post-author-name';\nimport * as postAuthorBiography from './post-author-biography';\nimport * as postComment from './post-comment';\nimport * as postCommentsCount from './post-comments-count';\nimport * as postCommentsForm from './post-comments-form';\nimport * as postCommentsLink from './post-comments-link';\nimport * as postContent from './post-content';\nimport * as postDate from './post-date';\nimport * as postExcerpt from './post-excerpt';\nimport * as postFeaturedImage from './post-featured-image';\nimport * as postNavigationLink from './post-navigation-link';\nimport * as postTemplate from './post-template';\nimport * as postTerms from './post-terms';\nimport * as postTitle from './post-title';\nimport * as preformatted from './preformatted';\nimport * as pullquote from './pullquote';\nimport * as query from './query';\nimport * as queryNoResults from './query-no-results';\nimport * as queryPagination from './query-pagination';\nimport * as queryPaginationNext from './query-pagination-next';\nimport * as queryPaginationNumbers from './query-pagination-numbers';\nimport * as queryPaginationPrevious from './query-pagination-previous';\nimport * as queryTitle from './query-title';\nimport * as quote from './quote';\nimport * as reusableBlock from './block';\nimport * as readMore from './read-more';\nimport * as rss from './rss';\nimport * as search from './search';\nimport * as separator from './separator';\nimport * as shortcode from './shortcode';\nimport * as siteLogo from './site-logo';\nimport * as siteTagline from './site-tagline';\nimport * as siteTitle from './site-title';\nimport * as socialLink from './social-link';\nimport * as socialLinks from './social-links';\nimport * as spacer from './spacer';\nimport * as table from './table';\nimport * as tableOfContents from './table-of-contents';\nimport * as tagCloud from './tag-cloud';\nimport * as templatePart from './template-part';\nimport * as termDescription from './term-description';\nimport * as textColumns from './text-columns';\nimport * as verse from './verse';\nimport * as video from './video';\n\nimport isBlockMetadataExperimental from './utils/is-block-metadata-experimental';\n\n/**\n * Function to get all the block-library blocks in an array\n */\nconst getAllBlocks = () =>\n\t[\n\t\t// Common blocks are grouped at the top to prioritize their display\n\t\t// in various contexts — like the inserter and auto-complete components.\n\t\tparagraph,\n\t\timage,\n\t\theading,\n\t\tgallery,\n\t\tlist,\n\t\tlistItem,\n\t\tquote,\n\n\t\t// Register all remaining core blocks.\n\t\tarchives,\n\t\taudio,\n\t\tbutton,\n\t\tbuttons,\n\t\tcalendar,\n\t\tcategories,\n\t\t...( window.wp && window.wp.oldEditor ? [ classic ] : [] ), // Only add the classic block in WP Context.\n\t\tcode,\n\t\tcolumn,\n\t\tcolumns,\n\t\tcommentAuthorAvatar,\n\t\tcover,\n\t\tembed,\n\t\tfile,\n\t\tgroup,\n\t\thtml,\n\t\tlatestComments,\n\t\tlatestPosts,\n\t\tmediaText,\n\t\tmissing,\n\t\tmore,\n\t\tnextpage,\n\t\tpageList,\n\t\tpattern,\n\t\tpreformatted,\n\t\tpullquote,\n\t\treusableBlock,\n\t\trss,\n\t\tsearch,\n\t\tseparator,\n\t\tshortcode,\n\t\tsocialLink,\n\t\tsocialLinks,\n\t\tspacer,\n\t\ttable,\n\t\ttagCloud,\n\t\ttextColumns,\n\t\tverse,\n\t\tvideo,\n\n\t\t// theme blocks\n\t\tnavigation,\n\t\tnavigationLink,\n\t\tnavigationSubmenu,\n\t\tsiteLogo,\n\t\tsiteTitle,\n\t\tsiteTagline,\n\t\tquery,\n\t\ttemplatePart,\n\t\tavatar,\n\t\tpostTitle,\n\t\tpostExcerpt,\n\t\tpostFeaturedImage,\n\t\tpostContent,\n\t\tpostAuthor,\n\t\tpostAuthorName,\n\t\tpostComment,\n\t\tpostCommentsCount,\n\t\tpostCommentsLink,\n\t\tpostDate,\n\t\tpostTerms,\n\t\tpostNavigationLink,\n\t\tpostTemplate,\n\t\tqueryPagination,\n\t\tqueryPaginationNext,\n\t\tqueryPaginationNumbers,\n\t\tqueryPaginationPrevious,\n\t\tqueryNoResults,\n\t\treadMore,\n\t\tcomments,\n\t\tcommentAuthorName,\n\t\tcommentContent,\n\t\tcommentDate,\n\t\tcommentEditLink,\n\t\tcommentReplyLink,\n\t\tcommentTemplate,\n\t\tcommentsTitle,\n\t\tcommentsPagination,\n\t\tcommentsPaginationNext,\n\t\tcommentsPaginationNumbers,\n\t\tcommentsPaginationPrevious,\n\t\tpostCommentsForm,\n\t\ttableOfContents,\n\t\thomeLink,\n\t\tlogInOut,\n\t\ttermDescription,\n\t\tqueryTitle,\n\t\tpostAuthorBiography,\n\t].filter( Boolean );\n\n/**\n * Function to get all the core blocks in an array.\n *\n * @example\n * ```js\n * import { __experimentalGetCoreBlocks } from '@wordpress/block-library';\n *\n * const coreBlocks = __experimentalGetCoreBlocks();\n * ```\n */\nexport const __experimentalGetCoreBlocks = () =>\n\tgetAllBlocks().filter(\n\t\t( { metadata } ) => ! isBlockMetadataExperimental( metadata )\n\t);\n\n/**\n * Function to register core blocks provided by the block editor.\n *\n * @param {Array} blocks An optional array of the core blocks being registered.\n *\n * @example\n * ```js\n * import { registerCoreBlocks } from '@wordpress/block-library';\n *\n * registerCoreBlocks();\n * ```\n */\nexport const registerCoreBlocks = (\n\tblocks = __experimentalGetCoreBlocks()\n) => {\n\tblocks.forEach( ( { init } ) => init() );\n\n\tsetDefaultBlockName( paragraph.name );\n\tif ( window.wp && window.wp.oldEditor ) {\n\t\tsetFreeformContentHandlerName( classic.name );\n\t}\n\tsetUnregisteredTypeHandlerName( missing.name );\n\tsetGroupingBlockName( group.name );\n};\n\n/**\n * Function to register experimental core blocks depending on editor settings.\n *\n * @param {boolean} enableFSEBlocks Whether to enable the full site editing blocks.\n * @example\n * ```js\n * import { __experimentalRegisterExperimentalCoreBlocks } from '@wordpress/block-library';\n *\n * __experimentalRegisterExperimentalCoreBlocks( settings );\n * ```\n */\nexport const __experimentalRegisterExperimentalCoreBlocks = process.env\n\t.IS_GUTENBERG_PLUGIN\n\t? ( { enableFSEBlocks } = {} ) => {\n\t\t\tconst enabledExperiments = [ enableFSEBlocks ? 'fse' : null ];\n\t\t\tgetAllBlocks()\n\t\t\t\t.filter( ( { metadata } ) =>\n\t\t\t\t\tisBlockMetadataExperimental( metadata )\n\t\t\t\t)\n\t\t\t\t.filter(\n\t\t\t\t\t( { metadata: { __experimental } } ) =>\n\t\t\t\t\t\t__experimental === true ||\n\t\t\t\t\t\tenabledExperiments.includes( __experimental )\n\t\t\t\t)\n\t\t\t\t.forEach( ( { init } ) => init() );\n\t  }\n\t: undefined;\n"],"names":["classNames","StorageObject","_parseArray","resultSet","array","length","i","_parse","prototype","Object","create","hasOwn","hasOwnProperty","SPACE","arg","argType","str","split","_parseString","Array","isArray","object","toString","k","call","_parseObject","num","_parseNumber","len","arguments","args","classSet","list","push","join","module","exports","default","classes","inner","apply","key","fn","options","head","tail","size","memoized","node","searchCache","next","prev","val","maxSize","clear","characterMap","chars","keys","allAccents","RegExp","firstAccent","removeAccents","string","replace","match","has","remove","metadata","__experimental","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","obj","prop","r","Symbol","toStringTag","value","window","SVG","viewBox","xmlns","Path","initBlock","block","settings","name","registerBlockType","icon","example","edit","attributes","setAttributes","showLabel","showPostCounts","displayAsDropdown","type","InspectorControls","PanelBody","title","__","ToggleControl","label","checked","onChange","SelectControl","useBlockProps","Disabled","init","fillRule","clipRule","_extends","assign","target","source","this","getAvatarSizes","sizes","minSize","Math","floor","useDefaultAvatar","avatarURL","defaultAvatarUrl","useSelect","select","getSettings","blockEditorStore","__experimentalDiscussionSettings","AUTHORS_QUERY","who","per_page","_fields","context","filteredAuthorsList","setFilteredAuthorsList","useState","authorsList","getUsers","coreStore","map","author","id","ComboboxControl","help","onFilterValueChange","inputValue","filter","option","toLowerCase","startsWith","AvatarInspectorControls","avatar","selectUser","RangeControl","newSize","min","max","initialPosition","isLink","linkTarget","userId","ResizableAvatar","blockProps","isSelected","borderProps","useBorderProps","doubledSizedSrc","addQueryArgs","removeQueryArgs","src","s","ResizableBox","width","height","showHandle","onResizeStop","event","direction","elt","delta","parseInt","lockAspectRatio","enable","top","right","isRTL","bottom","left","minWidth","maxWidth","alt","className","classnames","style","CommentEdit","commentId","avatars","useEntityProp","authorName","avatarUrls","values","defaultAvatar","sprintf","useCommentAvatar","href","onClick","preventDefault","UserEdit","postId","postType","authorDetails","getEditedEntityRecord","getUser","_authorId","avatar_urls","useUserAvatar","props","selector","attribute","caption","autoplay","loop","preload","supports","align","save","controls","autoPlay","RichText","tagName","ASPECT_RATIOS","ratio","WP_EMBED_TYPE","DEFAULT_EMBED_BLOCK","findMoreSuitableBlock","url","getBlockVariations","find","patterns","some","pattern","matchesPatterns","isFromWordPress","html","includes","createUpgradedEmbedBlock","attributesFromPreview","preview","providerNameSlug","restAttributes","getBlockType","matchedBlock","isCurrentBlockWP","shouldCreateNewBlock","createBlock","wpVariation","removeAspectRatioClasses","existingClassNames","aspectRatioClassNames","reduce","accumulator","getClassNames","allowResponsive","previewDocument","document","implementation","createHTMLDocument","body","innerHTML","iframe","querySelector","aspectRatio","toFixed","ratioIndex","potentialRatio","getAttributesFromPreview","memoize","currentClassNames","isResponsive","provider_name","providerName","kebabCase","getMergedAttributesWithPreview","currentAttributes","ignorePreviousClassName","ALLOWED_MEDIA_TYPES","from","isMatch","files","indexOf","transform","file","createBlobURL","tag","shortcode","named","mp3","m4a","ogg","wav","wma","transforms","deprecated","onReplace","insertBlocksAfter","isTemporaryAudio","isBlobURL","mediaUpload","toggleAttribute","newValue","onSelectURL","newSrc","embedBlock","useEffect","getBlobByURL","filesList","onFileChange","media","onSelectAudio","onError","e","onUploadError","allowedTypes","createErrorNotice","useDispatch","noticesStore","message","BlockControls","group","MediaReplaceFlow","mediaId","mediaURL","accept","onSelect","_x","isDisabled","Spinner","__experimentalGetElementClassName","placeholder","inlineToolbar","__unstableOnSplitAtEnd","getDefaultBlockName","MediaPlaceholder","BlockIcon","identity","x","cleanEmptyObject","cleanedNestedObjects","pickBy","mapValues","isEmpty","typography","fontFamily","pop","migrateBorderRadius","borderRadius","newAttributes","oldBorderRadius","border","radius","possibleBorderRadius","migrateCustomColorsAndGradients","customTextColor","customBackgroundColor","customGradient","color","text","background","gradient","oldColorsMigration","textColor","blockAttributes","v11","rel","backgroundColor","anchor","alignWide","__experimentalSkipSerialization","gradients","__experimentalDefaultControls","fontSize","__experimentalFontFamily","reusable","spacing","padding","__experimentalBorder","__experimentalSelector","getBorderClassesAndStyles","colorProps","getColorClassesAndStyles","spacingProps","getSpacingClassesAndStyles","buttonClasses","buttonStyle","wrapperClasses","v10","migrate","migrateFontFamily","isEligible","compose","textClass","getColorClassName","backgroundClass","gradientClass","__experimentalGetGradientClass","newClassName","trim","NEW_TAB_REL","WidthPanel","selectedWidth","ButtonGroup","widthValue","Button","isSmall","variant","newWidth","mergeBlocks","onSetLinkRel","useCallback","popoverAnchor","setPopoverAnchor","useColorProps","useSpacingProps","ref","useRef","richTextRef","useMergeRefs","onKeyDown","isKeyboardEvent","startEditing","unlink","current","focus","isEditingURL","setIsEditingURL","isURLSet","opensInNewTab","withoutInteractiveFormatting","onSplit","onMerge","identifier","ToolbarButton","link","shortcut","displayShortcut","linkOff","isActive","Popover","position","onClose","focusOnMount","__unstableSlotName","shift","newURL","newOpensInNewTab","newLinkTarget","updatedRel","onToggleOpenInNewTab","onRemove","forceIsEditingLink","__experimentalGroup","TextControl","merge","migrateWithLayout","layout","contentJustification","orientation","updatedAttributes","justifyContent","__experimentalExposeControlsToChildren","blockGap","margin","InnerBlocks","isMultiBlock","blocks","buttons","element","createElement","content","innerText","getAttribute","paragraphs","every","links","querySelectorAll","ALLOWED_BLOCKS","buttonBlockName","DEFAULT_BLOCK","attributesToCopy","innerBlocks","preferredStyle","preferredStyleVariations","__experimentalPreferredStyleVariations","innerBlocksProps","useInnerBlocksProps","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","template","__experimentalLayout","templateInsertUpdatesSelection","getYearMonth","date","dateObj","Date","year","getFullYear","month","getMonth","to","hasPosts","hasPostsResolved","getEntityRecords","hasFinishedResolution","singlePublishedPostQuery","status","posts","postsResolved","_date","editorSelectors","getEditedPostAttribute","Placeholder","CategoriesEdit","showHierarchy","showOnlyTopLevel","showEmpty","selectId","useInstanceId","query","hide_empty","parent","records","categories","isResolving","useEntityRecords","getCategoriesList","parentId","attributeName","renderCategoryName","unescape","renderCategoryListItem","category","childCategories","count","childCategory","renderCategoryDropdownItem","level","TagName","pin","categoriesList","VisuallyHidden","as","htmlFor","renderCategoryDropdown","clientId","replaceBlocks","getBlock","rawHandler","HTML","serialize","wp","getMultiSelectedBlockClientIds","canRemove","canRemoveBlock","didMount","editor","tinymce","getContent","setContent","baseURL","suffix","wpEditorL10n","onSetup","bookmark","on","selection","getBookmark","scrollContainer","scrollPosition","scrollTop","once","moveToBookmark","debouncedOnChange","debounce","_lastChange","cancel","stopPropagation","keyCode","BACKSPACE","DELETE","getBody","childNodes","test","textContent","isTmceEmpty","stopImmediatePropagation","altKey","F10","rootNode","ownerDocument","activeElement","blur","initialize","oldEditor","inline","content_css","fixed_toolbar_container","setup","onReadyStateChange","readyState","EditorManager","overrideDefaults","base_url","addEventListener","removeEventListener","ToolbarGroup","nativeEvent","RawHTML","escapeOpeningSquareBrackets","escapeProtocolInIsolatedUrls","regExp","nodeName","children","firstChild","schema","pre","code","preserveWhiteSpace","__unstablePastePlainText","pipe","verticalAlignment","isFinite","flexBasis","templateLock","units","useCustomUnits","availableUnits","useSetting","columnsIds","hasChildBlocks","rootClientId","getBlockOrder","getBlockRootClientId","rootId","updateBlockAttributes","widthWithUnit","Number","columnsCount","currentColumnPosition","renderAppender","BlockVerticalAlignmentToolbar","labelPosition","__unstableInputWidth","nextWidth","parseFloat","endsWith","multiplier","round","getDeprecatedLayoutColumn","originalContent","columnMatch","doc","classListItem","classList","isStackedOnMobile","columns","innerBlock","migratedInnerBlocks","columnIndex","columnBlocks","ignoredColumns","toWidthPrecision","unitlessValue","getEffectiveColumnWidth","totalBlockCount","getTotalColumnsWidth","sum","getColumnWidths","getRedistributedColumnWidths","availableWidth","totalWidth","getMappedColumnWidths","widths","ColumnsEditContainerWrapper","withDispatch","dispatch","ownProps","registry","updateAlignment","forEach","innerBlockClientId","updateColumns","previousColumns","newColumns","replaceInnerBlocks","getBlocks","hasExplicitWidths","blockWidth","isAddingColumn","newColumnWidth","slice","getBlockCount","Notice","isDismissible","blockType","defaultVariation","variations","getDefaultBlockVariation","blocksStore","__experimentalBlockVariationPicker","nextVariation","createBlocksFromInnerBlocksTemplate","allowSkip","description","scope","isDefault","__experimentalConvert","columnWidth","innerBlocksTemplate","selectedBlocksLength","priority","mediaAlt","mediaPosition","mediaSizeSlug","sizeSlug","mediaType","mediaUrl","mediaWidth","linkClass","linkDestination","reverse","viewportWidth","Component","apiVersion","Tag","newClasses","cls","newBlockProps","CommentsInspectorControls","CommentsFormPlaceholder","disabledFormRef","useDisabled","instanceId","noValidate","cols","rows","commentStatus","setCommentStatus","isSiteEditor","defaultCommentStatus","postTypeSupportsComments","getPostType","comments","actions","Warning","PostCommentsPlaceholder","postTitle","disabledRef","loading","dateTime","CommentsLegacy","textAlign","legacy","AlignmentControl","nextAlign","TEMPLATE","maxSizeBuffer","inspectorControls","resizableAvatar","Circle","cx","cy","v1","lineHeight","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalLetterSpacing","displayName","getEntityRecord","comment","author_name","user","blockControls","newAlign","displayAuthor","rendered","format","siteFormat","getDateSettings","formats","defaultFormat","nextFormat","commentDate","dateI18n","CommentTemplateInnerBlocks","activeCommentId","setActiveCommentId","firstCommentId","MemoizedCommentTemplatePreview","isHidden","CommentsList","memo","blockPreviewProps","useBlockPreview","handleOnClick","display","tabIndex","role","onKeyPress","index","BlockContextProvider","commentOrder","threadCommentsDepth","threadComments","commentsPerPage","commentQuery","queryArgs","order","_embed","pageComments","defaultCommentsPage","defaultPage","perPage","page","defaultPages","setDefaultPages","apiFetch","path","post","method","parse","then","res","pages","headers","useDefaultPageIndex","useMemo","useCommentQueryArgs","topLevelComments","commentTree","_embedded","child","useCommentTree","commentsDepth","defaultCommentsToShow","getCommentsPlaceholder","arrowMap","none","arrow","chevron","paginationArrow","displayArrow","PlainText","__experimentalVersion","newLabel","CommentsPaginationArrowControls","isBlock","usedLayout","blockTypeOrName","layoutBlockSupportConfig","getBlockSupport","getDefaultBlockLayout","hasNextPreviousBlocks","PaginationItem","extraClass","HeadingLevelIcon","isPressed","levelToPath","HEADING_LEVELS","POPOVER_PROPS","HeadingLevelDropdown","selectedLevel","ToolbarDropdownMenu","popoverProps","targetLevel","singleCommentLabel","multipleCommentsLabel","oldAttributes","showPostTitle","showCommentsCount","commentsCount","setCommentsCount","rawTitle","currentPostId","catch","newLevel","_n","POSITION_CLASSNAMES","center","IMAGE_BACKGROUND_TYPE","VIDEO_BACKGROUND_TYPE","DEFAULT_FOCAL_POINT","y","dimRatioToClass","isContentPositionCenter","contentPosition","getPositionClassName","backgroundImageStyles","backgroundImage","dimRatioToClassV1","migrateDimRatio","dimRatio","hasParallax","overlayColor","customOverlayColor","backgroundType","focalPoint","v8ToV10BlockAttributes","isRepeated","minHeight","minHeightUnit","isDark","enum","v7toV10BlockSupports","__experimentalDuotone","useFeaturedImage","minHeightProp","overlayColorClass","isImageBackground","isVideoBackground","isImgElement","bgStyle","objectPosition","gradientValue","muted","playsInline","v9","v8","v7","v6","videoStyle","positionValue","backgroundPosition","v5","v4","v3","contentAlign","newAttribs","v2","grad","turn","rad","PI","t","pow","u","g","b","h","v","l","f","c","p","m","exec","substr","N","M","H","$","j","parsed","rgba","isValid","brightness","isLight","toHex","toRgb","toRgbString","toHsl","toHslString","toHsv","invert","w","saturate","desaturate","grayscale","lighten","darken","rotate","hue","alpha","isEqual","S","arrayToHex","arr","isIgnoredColor","data","ignoredColor","isIgnoredColorAsNumbers","isIgnoredRGBColor","isIgnoredRGBAColor","redIgnored","greenIgnored","blueIgnored","alphaIgnored","threshold","alphaData","alphaInRange","inRange","isIgnoredRGBAColorWithThreshold","colorComponent","ignoredColorComponent","dominantAlgorithm","colorHash","step","red","green","blue","redTotal","greenTotal","blueTotal","alphaTotal","defaultColor","simpleAlgorithm","sqrtAlgorithm","sqrt","getDefaultColor","getOption","defaultValue","getSrc","resource","HTMLCanvasElement","isInstanceOfHTMLCanvasElement","OffscreenCanvas","isInstanceOfOffscreenCanvas","ImageBitmap","isInstanceOfImageBitmap","isInstanceOfHTMLImageElement","HTMLImageElement","isWebWorkers","ERROR_PREFIX","outputError","silent","error","console","getError","Error","FastAverageColor","canvas","ctx","getColorAsync","Promise","reject","Image","img","crossOrigin","bindImageEvents","complete","result","getColor","resolve","prepareResult","originalSize","factor","srcLeft","srcTop","srcWidth","srcHeight","destWidth","destHeight","mode","prepareSizeAndPosition","naturalWidth","naturalHeight","search","HTMLVideoElement","isInstanceOfHTMLVideoElement","videoWidth","videoHeight","getOriginalSize","concat","getContext","clearRect","drawImage","bitmapData","getImageData","getColorFromArray4","arrLength","algorithm","rgb","isDarkColor","hex","hexa","destroy","_this","onload","unbindEvents","onerror","onabort","retrieveFastAverageColor","fastAverageColor","CoverHeightInput","onUnitChange","unit","inputId","UnitControl","isPx","defaultValues","px","em","rem","vw","vh","computedValue","parsedQuantity","parseQuantityAndUnitFromRawValue","BaseControl","isResetValueOnUnitChange","unprocessedValue","isNaN","CoverInspectorControls","setOverlayColor","coverRef","currentSettings","mediaElement","setGradient","__experimentalUseGradient","showFocalPointPicker","imperativeFocalPointPreview","styleOfRef","property","colorGradientSettings","useMultipleOriginColorsAndGradients","Fragment","FocalPointPicker","onDragStart","onDrag","newFocalPoint","TextareaControl","newAlt","ExternalLink","PanelRow","__experimentalHasMultipleOrigins","__experimentalIsRenderedInSidebar","colorValue","onColorChange","onGradientChange","isShownByDefault","resetAllFilter","panelId","hasValue","onDeselect","newDimRation","required","newMinHeight","nextUnit","CoverBlockControls","onSelectMedia","toggleUseFeaturedImage","hasInnerBlocks","prevMinHeightValue","setPrevMinHeightValue","prevMinHeightUnit","setPrevMinHeightUnit","isMinFullHeight","nextPosition","onToggle","onToggleFeaturedImage","CoverPlaceholder","disableMediaButtons","labels","instructions","RESIZABLE_BOX_ENABLE_OPTION","topRight","bottomRight","bottomLeft","topLeft","ResizableCover","onResizeStart","onResize","isResizing","setIsResizing","_event","_direction","clientHeight","__experimentalShowTooltip","__experimentalTooltipProps","axis","isVisible","extend","white","bisque","cadetblue","chartreuse","chocolate","coral","antiquewhite","aqua","azure","whitesmoke","papayawhip","plum","blanchedalmond","black","gold","goldenrod","gainsboro","cornsilk","cornflowerblue","burlywood","aquamarine","beige","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkkhaki","darkgray","darkgreen","darkgrey","peachpuff","darkmagenta","darkred","darkorchid","darkorange","darkslateblue","gray","darkslategray","darkslategrey","deeppink","deepskyblue","wheat","firebrick","floralwhite","ghostwhite","darkviolet","magenta","dodgerblue","grey","honeydew","hotpink","blueviolet","forestgreen","lawngreen","indianred","indigo","fuchsia","brown","maroon","mediumblue","lightcoral","darkturquoise","lightcyan","ivory","lightyellow","lightsalmon","lightseagreen","linen","mediumaquamarine","lemonchiffon","lime","khaki","mediumseagreen","limegreen","mediumspringgreen","lightskyblue","lightblue","midnightblue","lightpink","mistyrose","moccasin","mintcream","lightslategray","lightslategrey","navajowhite","navy","mediumvioletred","powderblue","palegoldenrod","oldlace","paleturquoise","mediumturquoise","mediumorchid","rebeccapurple","lightsteelblue","mediumslateblue","thistle","tan","orchid","mediumpurple","purple","pink","skyblue","springgreen","palegreen","yellow","slateblue","lavenderblush","peru","palevioletred","violet","teal","slategray","slategrey","aliceblue","darkseagreen","darkolivegreen","greenyellow","seagreen","seashell","tomato","silver","sienna","lavender","lightgreen","orange","orangered","steelblue","royalblue","turquoise","yellowgreen","salmon","saddlebrown","sandybrown","rosybrown","darksalmon","lightgoldenrodyellow","snow","lightgrey","lightgray","dimgray","dimgrey","olivedrab","olive","toName","closest","withColors","toggleSelection","featuredImage","getMedia","source_url","__unstableMarkNextChangeAsNotPersistent","getBlobTypeByURL","media_type","attributesFromMedia","isUploadingMedia","isTemporaryMedia","isCoverDark","elementRef","setIsDark","process","colord","useCoverIsDark","minHeightWithUnit","mediaStyle","hasBackground","getInnerBlocksTemplate","ColorPalette","disableCustomColors","clearable","class","withIllustration","duotone","parentAttributes","attributesWithoutBackgroundColors","transformedColorAttributes","groupAttributes","imgClasses","getResponsiveHelp","blockSupportsResponsive","showEditButton","themeSupportsResponsive","toggleResponsive","switchBackToURLInput","embedContentIcon","embedAudioIcon","embedPhotoIcon","embedVideoIcon","embedTwitterIcon","foreground","G","embedYouTubeIcon","embedFacebookIcon","embedInstagramIcon","embedWordPressIcon","embedSpotifyIcon","embedFlickrIcon","embedVimeoIcon","embedRedditIcon","embedTumblrIcon","embedAmazonIcon","embedAnimotoIcon","fill","embedDailymotionIcon","embedPinterestIcon","version","embedWolframIcon","embedPocketCastsIcon","onSubmit","cannotEmbed","fallback","tryAgain","showColors","attributeMap","frameborder","marginheight","marginwidth","WpEmbedPreview","DOMParser","parseFromString","iframeProps","defaultView","resizeWPembeds","secret","useFocusableIframe","EmbedPreview","constructor","super","hideOverlay","bind","state","interactive","nextProps","setState","render","previewable","onCaptionChange","scripts","photo","imageUrl","thumbnail_url","photoPreview","renderToString","getPhotoHtml","parsedHost","URL","host","parsedHostBaseUrl","splice","iframeTitle","sandboxClassnames","embedWrapper","SandBox","onFocus","onMouseUp","EMBED_BLOCK","keywords","responsive","variation","variationAttributes","embedClassName","attributesUrl","defaultEmbedInfo","provider","setURL","invalidateResolution","fetching","getEmbedPreview","isPreviewEmbedFallback","isRequestingEmbedPreview","getThemeSupports","embedPreview","previewIsFallback","badEmbedProvider","wordpressCantEmbed","validPreview","getMergedAttributes","upgradedBlock","View","classFromPreview","newAllowResponsive","fileId","fileName","textLinkHref","textLinkTarget","showDownloadButton","downloadButtonText","displayPreview","previewHeight","pdfEmbedLabel","hasFilename","describedById","download","FileBlockInspector","hrefs","openInNewWindow","changeLinkDestinationOption","changeOpenInNewWindow","changeShowDownloadButton","changeDisplayPreview","changePreviewHeight","attachmentPage","linkDestinationOptions","MIN_PREVIEW_HEIGHT","MAX_PREVIEW_HEIGHT","createActiveXObject","ax","ActiveXObject","ClipboardToolbarButton","disabled","createNotice","useCopyToClipboard","blobURL","getFilename","mime_type","onSelectFile","newMedia","isPdf","changeDownloadButtonText","revokeBlobURL","getAnimateClassName","displayPreviewInEditor","navigator","userAgent","maxTouchPoints","newHref","newHeight","maxHeight","grid","LINK_DESTINATION_NONE","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","pickRelevantMediaFiles","image","imageProps","pick","fullUrl","isGalleryV2Enabled","Platform","galleryBlockV2Enabled","getGalleryBlockV2Enabled","DEPRECATED_LINK_DESTINATION_MEDIA","DEPRECATED_LINK_DESTINATION_ATTACHMENT","defaultColumnsNumberV1","images","getHrefAndDestination","destination","runV2Migration","linkTo","imageBlocks","getImageBlock","ids","allowResize","items","minimum","maximum","imageCrop","fixedHeight","parsedId","isInteger","alignnone","sharedIcon","MIN_SIZE","LINK_DESTINATION_CUSTOM","galleryDestination","imageDestination","IMAGE_LINK_DESTINATION_MEDIA","IMAGE_LINK_DESTINATION_ATTACHMENT","IMAGE_LINK_DESTINATION_NONE","getUpdatedLinkTargetSettings","currentRel","newRel","relVal","removeNewTabRel","RichTextVisibilityHelper","captionRef","richTextProps","mediaPlaceholder","alignments","EMPTY_IMAGE_MEDIA","GapStyles","styleElement","useContext","BlockList","fallbackValue","row","gapValue","column","getGapCSSValue","gap","createPortal","linkOptions","PLACEHOLDER_TEXT","MOBILE_CONTROL_PROPS_RANGE_CONTROL","withViewportMatch","isNarrow","selectBlock","clearSelectedBlock","createSuccessNotice","innerBlockImages","wasBlockJustInserted","fromSavedContent","Boolean","imageData","imageIds","imageBlock","getMediaItems","include","orderby","useGetMedia","newImages","currentImages","setCurrentImages","imagesUpdated","newCurrentImages","currentImg","currentImage","fromSavedConent","getNewImages","useGetNewImages","newImage","buildImageAttributes","imageSizeOptions","imageSizes","resizedImages","currentResizedImages","currentSizes","defaultUrl","slug","mediaDetailsUrl","getImageSizing","useImageSizes","imageAttributes","raw","alt_text","isValidFileType","updateImages","selectedImages","newFileUploads","imageArray","processedImages","newOrderMap","existingImageBlocks","newBlocks","existingImg","sort","view","defaultProps","hasImages","hasImageIds","imagesUploading","mediaPlaceholderProps","web","addToGallery","native","isAppender","autoOpenMediaUpload","handleUpload","multiple","hasLinkTo","imageCount","changedAttributes","linkToText","linkType","hideCancelButton","openInNewTab","noticeText","newSizeSlug","getImageSizeAttributes","imageSize","mediaIds","GalleryImage","onSelectImage","onRemoveImage","bindContainer","onEdit","onSelectImageFromLibrary","onSelectCustomURL","isEditing","container","componentDidUpdate","deselectOnBlur","mediaAttributes","isTemporaryImage","omittedAlt","restMediaAttributes","omittedCaption","isFirstItem","isLastItem","onMoveForward","onMoveBackward","ariaLabel","imageIcon","chevronLeft","chevronRight","closeSmall","newCaption","withSelect","selectedImage","onDeselectImage","onSetImageAttributes","attrs","withNotices","noticeUI","noticeOperations","setSelectedImage","attachmentCaptions","setAttachmentCaptions","newAttrs","onMove","oldIndex","newIndex","selectCaption","newImageId","currentImageCaption","attachment","onSelectImages","removeAllNotices","notices","shouldShowSizeOptions","onFocusGalleryCaption","parseShortcodeIds","addFilter","toBlock","fromBlocks","galleryBlock","transformedBlock","validImages","imageId","imageSizeSlug","saveWithoutInnerBlocks","migrateAttributes","__experimentalOnEnter","__experimentalSettings","inherit","contentSize","styles","htmlElementMessages","header","main","section","article","aside","footer","widestAlignment","groupInnerBlocks","flexWrap","stack","themeSupportsLayout","supportsLayout","defaultLayout","layoutSupportEnabled","blockSupports","migrateCustomColors","TEXT_ALIGN_OPTIONS","migrateTextAlign","rest","__unstablePasteTextInline","anchors","generateAnchor","dummyElement","getTextWithoutMarkup","getSlug","setAnchor","phrasingContentSchema","isPaste","h1","h2","h3","h4","h5","h6","getBlockAttributes","outerHTML","prefix","__experimentalLabel","attributesToMerge","canGenerateAnchors","getGlobalBlockCount","generateAnchors","isOriginal","deleteEnter","home","homeUrl","getUnstableBase","labelValue","allowedFormats","HTMLEditPreview","settingStyles","transformStyles","isPreview","setIsPreview","figure","extraImageProps","figureStyle","useClientWidth","dependencies","clientWidth","setClientWidth","calculateClientWidth","temporaryURL","containerRef","isContentLocked","imageRef","prevUrl","usePrevious","multiImageSelection","getBlockName","multiSelectedClientIds","_clientId","canInsertCover","imageEditing","canInsertBlockType","isLargeViewport","useViewportMatch","isWideAligned","loadedNaturalWidth","loadedNaturalHeight","setLoadedNaturalSize","isEditingImage","setIsEditingImage","externalBlob","setExternalBlob","isResizable","isExternalImage","fetch","response","blob","canEditImage","allowCrop","BlockAlignmentControl","extraUpdatedAttributes","onChangeUrl","mediaLink","crop","upload","overlayText","switchToBlockType","onChangeImage","newUrl","imageWidth","imageHeight","filename","defaultedAlt","isRounded","hasCustomBorder","imageWidthWithinContainer","imageHeightWithinContainer","onImageError","onLoad","exceedMaxWidth","currentWidth","currentHeight","maxWidthBuffer","showRightHandle","showLeftHandle","onSaveImage","onFinishEditing","getFirstAnchorAttributeFormHTML","firstElementChild","imageSchema","require","figcaption","alignMatches","idMatches","anchorElement","nodeToRemove","parentNode","removeChild","getEditWrapperProps","setTemporaryURL","altRef","imageDefaultSize","__unstableGetContentLockingParent","additionalAttributes","defaultSize","media_details","isTemp","mediaPreview","imageClasses","commentsToShow","displayAvatar","displayDate","displayExcerpt","urlQueryArgs","_locale","CATEGORIES_LIST_QUERY","USERS_LIST_QUERY","has_published_posts","LatestPostsEdit","postsToShow","orderBy","selectedAuthor","displayFeaturedImage","displayPostContentRadio","displayPostContent","displayPostDate","postLayout","excerptLength","featuredImageAlign","featuredImageSizeSlug","featuredImageSizeWidth","featuredImageSizeHeight","addLinkToFeaturedImage","latestPosts","defaultImageWidth","defaultImageHeight","authorList","catIds","cat","latestPostsQuery","imageDimensions","createWarningNotice","removeNotice","noticeStore","noticeId","showRedirectionPreventedNotice","categorySuggestions","RadioControl","selected","BlockAlignmentToolbar","isCollapsed","QueryControls","numberOfItems","onOrderChange","onOrderByChange","onNumberOfItemsChange","onCategoryChange","tokens","token","allCategories","selectedCategories","onAuthorChange","selectedAuthorId","displayPosts","layoutControls","dateFormat","titleTrimmed","excerpt","currentAuthor","excerptElement","imageSourceUrl","featuredImageAlt","getFeaturedImageDetails","renderFeaturedImage","postExcerpt","dangerouslySetInnerHTML","__html","date_gmt","createListBlockFromDOMElement","listElement","listAttributes","ordered","start","reversed","hasAttribute","listItem","nodeType","TEXT_NODE","nestedList","nodes","htmlNodes","childAttributes","childInnerBlocks","migrateToListV2","setAttribute","listBlock","omittedValues","v0","__experimentalRole","multiline","__unstableMultilineWrapperTags","__experimentalSlashInserter","int","forwardRef","extraProps","IndentUI","canOutdent","outdentList","innerSelect","selectionChange","parentBlockId","parentBlockAttributes","newParentBlock","useOutdentList","formatOutdentRTL","formatOutdent","describedBy","getListContentSchema","listContentSchema","ul","ol","li","getListContentFlat","flatMap","childBlocks","toHTMLString","_attributes","marginVertical","marginHorizontal","useCompactList","useRegistry","newInnerBlocks","since","alternative","batch","useMigrateOnLoad","formatListBulletsRTL","formatListBullets","formatListNumberedRTL","formatListNumbered","useIndentListItem","canIndent","getBlockIndex","multiSelect","getPreviousBlockClientId","getSelectionStart","getSelectionEnd","hasMultiSelection","_hasMultiSelection","clientIds","clonedBlocks","cloneBlock","previousSiblingId","newListItem","selectionStart","selectionEnd","attributeKey","offset","useOutdentListItem","moveBlocksToPosition","removeBlock","insertBlock","updateBlockListSettings","getSelectedBlockClientIds","getBlockListSettings","getParentListItemId","listId","parentListItemId","listItemName","castArray","firstClientId","parentListId","lastClientId","followingListItems","nestedListId","nestedListBlock","useCopy","useRefEffect","onCopy","clipboardData","getData","setData","JSON","stringify","useMerge","getNextBlockClientId","replaceBlock","outdentListItem","getTrailingId","_getNextId","getNextId","switchToDefaultBlockType","forward","replacement","indexToSelect","nextBlockClientId","previousBlockClientId","trailingId","convertToListItems","listItems","listName","indentListItem","formatIndentRTL","formatIndent","useEnterRef","propsRef","defaultPrevented","ENTER","topParentListBlock","blockIndex","middle","after","useEnter","useSpaceRef","shiftKey","metaKey","ctrlKey","useSpace","isAfter","useSplit","nextContent","displayLoginAsForm","redirectToCurrent","DEFAULT_MEDIA_SIZE_SLUG","v1ToV5ImageFillStyles","noop","baseAttributes","v4ToV5BlockAttributes","imageFill","v4ToV5Supports","mediaTypeRenders","video","backgroundStyles","gridTemplateColumns","imageFillStyles","ResizableBoxContainer","isMobile","ToolbarEditButton","PlaceholderContainer","commitWidthChange","onWidthChange","enablePositions","mediaTypeRenderers","applyWidthConstraints","getImageSourceUrlBySizeSlug","coverAttributes","coloredInnerBlocks","innerStyle","refMediaContainer","resizable","temporaryMediaWidth","setTemporaryMediaWidth","large","widthString","msGridColumns","mediaTextGeneralSettings","newMediaAlt","newMediaSizeSlug","imageSizeHelp","BlockVerticalAlignmentControl","alignment","pullLeft","pullRight","MissingEdit","convertToHTML","originalUndelimitedContent","originalName","hasContent","hasHTMLBlock","messageHTML","safeHTML","originalBlockType","DEFAULT_TEXT","dataset","customText","noTeaser","moreTag","noTeaserTag","cloneElement","useNavigationMenu","permissions","useResourcePermissions","canCreate","canUpdate","canDelete","hasResolved","navigationMenus","isResolvingNavigationMenus","hasResolvedNavigationMenus","selectNavigationMenus","navigationMenu","isNavigationMenuResolved","isNavigationMenuMissing","editedNavigationMenu","hasResolvedNavigationMenu","isNavigationMenuPublishedOrDraft","selectExistingMenu","canSwitchNavigationMenu","canUserCreateNavigationMenu","isResolvingCanUserCreateNavigationMenu","hasResolvedCanUserCreateNavigationMenu","canUserUpdateNavigationMenu","hasResolvedCanUserUpdateNavigationMenu","canUserDeleteNavigationMenu","hasResolvedCanUserDeleteNavigationMenu","useNavigationEntities","menuId","menus","isResolvingMenus","hasResolvedMenus","isResolvingPages","hasResolvedPages","menuItems","hasResolvedMenuItems","enabled","hasPages","hasMenus","navigation","currentMenuId","onSelectNavigationMenu","onSelectClassicMenu","onCreateNew","actionLabel","createNavigationMenuIsSuccess","createNavigationMenuIsError","toggleProps","createActionLabel","selectorLabel","setSelectorLabel","setIsPressed","enableOptions","setEnableOptions","isCreatingMenu","setIsCreatingMenu","classicMenus","currentTitle","shouldEnableMenuSelector","menuChoices","decodeEntities","hasNavigationMenus","hasClassicMenus","showNavigationMenus","showClassicMenus","noMenuSelected","noBlockMenus","menuUnavailable","chevronUp","chevronDown","isBusy","__experimentalIsFocusable","DropdownMenu","MenuGroup","MenuItemsChoice","choices","menu","MenuItem","NavigationPlaceholder","onCreateEmpty","speak","isResolvingActions","iconPosition","OverlayMenuIcon","focusable","Rect","ResponsiveWrapper","isOpen","isHiddenByDefault","overlayBackgroundColor","overlayTextColor","hasIcon","responsiveContainerClasses","openButtonClasses","modalId","dialogProps","close","LAYOUT","NavigationInnerBlocks","hasCustomPlaceholder","isImmediateParentOfSelectedBlock","selectedBlockHasChildren","hasSelectedInnerBlock","getSelectedBlockClientId","selectedBlockId","onInput","useEntityBlockEditor","shouldDirectInsert","parentOrChildHasSelection","hasMenuItems","showPlaceholder","NavigationMenuNameControl","updateTitle","createTemplatePartId","theme","DRAFT_MENU_PARAMS","PUBLISHED_MENU_PARAMS","useGenerateDefaultNavigationTitle","area","getBlockParentsByBlockName","parentTemplatePartClientIds","definedAreas","__experimentalGetDefaultTemplatePartAreas","templatePartClientId","templatePartBlock","templatePartEntity","definedArea","useTemplatePartAreaLabel","async","resolveSelect","draftNavigationMenus","all","matchingMenuTitleCount","CREATE_NAVIGATION_MENU_SUCCESS","CREATE_NAVIGATION_MENU_ERROR","CREATE_NAVIGATION_MENU_PENDING","CREATE_NAVIGATION_MENU_IDLE","useCreateNavigationMenu","postStatus","setStatus","setValue","setError","saveEntityRecord","generateDefaultTitle","err","cause","record","isIdle","isPending","isSuccess","isError","EMPTY_OBJECT","UnsavedInnerBlocks","hasSavedUnsavedInnerBlocks","onSave","hasSelection","originalBlocks","innerBlocksAreDirty","savingLock","isSaving","hasResolvedDraftNavigationMenus","isSavingEntityRecord","createNavigationMenu","Wrapper","NavigationMenuDeleteControl","onDelete","isConfirmModalVisible","setIsConfirmModalVisible","useEntityId","deleteEntityRecord","isDestructive","Modal","closeLabel","onRequestClose","Flex","justify","FlexItem","force","noticeRef","showNotice","customMsg","hideNotice","OverlayMenuPreview","menuItemsToBlocks","menuTree","relation","hashTable","dataTree","createDataTree","mapMenuItemsToBlocks","applyFilters","mapping","sortedItems","menu_order","menuItem","menuItemToBlockAttributes","nestedBlocks","nestedMapping","menuItemTitleField","xfn","attr_title","object_id","menuItemTypeField","kind","isTopLevelItem","isTopLevelLink","CLASSIC_MENU_CONVERSION_SUCCESS","CLASSIC_MENU_CONVERSION_ERROR","CLASSIC_MENU_CONVERSION_PENDING","EMPTY_ARRAY","getComputedStyle","detectColors","colorsDetectionElement","setColor","setBackground","backgroundColorNode","ELEMENT_NODE","setBackgroundColor","setTextColor","setOverlayBackgroundColor","setOverlayTextColor","hasSubmenuIndicatorSetting","hasColorSettings","customPlaceholder","CustomPlaceholder","openSubmenusOnClick","overlayMenu","showSubmenuIcon","setRef","recursionId","hasAlreadyRendered","useHasRecursion","editEntityRecord","showNavigationMenuStatusNotice","hideNavigationMenuStatusNotice","useNavigationNotice","showClassicMenuConversionNotice","hideClassicMenuConversionNotice","showMenuAutoPublishDraftNotice","hideMenuAutoPublishDraftNotice","showNavigationMenuPermissionsNotice","hideNavigationMenuPermissionsNotice","createNavigationMenuStatus","createNavigationMenuError","createNavigationMenuPost","isCreatingNavigationMenu","createUntitledEmptyNavigationMenu","handleUpdateMenu","focusNavigationBlock","hasUncontrolledInnerBlocks","uncontrolledInnerBlocks","isInnerBlockSelected","_uncontrolledInnerBlocks","_hasUncontrolledInnerBlocks","_controlledInnerBlocks","controlledInnerBlocks","useInnerBlocks","hasSubmenus","setHasSavedUnsavedInnerBlocks","isResponsiveMenuOpen","setResponsiveMenuVisibility","overlayMenuPreview","setOverlayMenuPreview","navMenuResolvedButMissing","menuA","menuB","menuADate","menuBDate","getTime","fallbackNavigationMenus","navRef","convert","convertClassicMenu","classicMenuConversionStatus","classicMenuConversionError","menuName","classicMenuItems","getMenuItems","throwOnError","convertClassicMenuToBlockMenu","useConvertClassicToBlockMenu","isConvertingClassicMenu","isPlaceholder","isEntityAvailable","isLoading","textDecoration","hasBlockOverlay","useBlockOverlayActive","enableContrastChecking","detectedBackgroundColor","setDetectedBackgroundColor","detectedColor","setDetectedColor","detectedOverlayBackgroundColor","setDetectedOverlayBackgroundColor","detectedOverlayColor","setDetectedOverlayColor","subMenuElement","hasManagePermissions","overlayMenuPreviewClasses","open","isDraftNavigationMenu","stylingInspectorControls","hideLabelFromVision","PanelColorSettings","initialOpen","colorSettings","ContrastChecker","navMenu","classicMenu","post_type","PlaceholderComponent","EntityProvider","uniqueId","deletedMenuTitle","TYPOGRAPHY_PRESET_DEPRECATION_MAP","fontStyle","fontWeight","textTransform","migrateIdToRef","navigationMenuId","itemsJustification","rgbTextColor","rgbBackgroundColor","__unstableLocation","customOverlayBackgroundColor","customOverlayTextColor","inserter","__experimentalTextDecoration","allowSwitching","allowInheriting","styleAttribute","attributeValue","customFontSize","getSuggestionsQuery","subtype","navStripHTML","LinkControlTransforms","blockTransforms","_getBlock","getBlockTransformItems","featuredBlocks","item","getIcon","variationName","postContent","customPostType","enhanceNavigationLinkVariations","buttonUseIcon","buttonPosition","linkIcon","leftAttributes","rightLabel","isInvalid","isDraft","isPostType","hasId","useIsInvalidLink","maxNestingLevel","isLinkOpen","setIsLinkOpen","listItemRef","isDraggingWithin","setIsDraggingWithin","handleDragStart","handleDragEnter","handleDragEnd","contains","useIsDraggingWithin","itemLabelPlaceholder","pagesPermissions","postsPermissions","isAtMaxNesting","isParentOfSelectedBlock","hasChildren","transformToSubmenu","newSubmenu","isURL","prependHTTP","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","selectLabelText","placeCaretAtHorizontalEdge","userCanCreate","isSubMenu","colors","getColors","missingText","getMissingText","placeholderText","tooltipText","addSubmenu","descriptionValue","titleValue","autoComplete","relValue","KeyboardShortcuts","shortcuts","enter","Tooltip","hasTextControl","hasRichPreviews","showInitialSuggestions","withCreateSuggestion","createSuggestion","pageTitle","createSuggestionButtonText","searchTerm","createInterpolateElement","mark","noDirectEntry","noURLSuggestion","suggestionsQuery","updatedValue","originalLabel","originalKind","originalType","newKind","newType","newLabelWithoutHttp","newUrlWithoutHttp","escape","isBuiltInType","encodeURI","safeDecodeURI","updateNavigationLinkBlockAttributes","renderControlBottom","nofollow","ItemSubmenuIcon","strokeWidth","onlyDescendantIsEmptyLink","_onlyDescendantIsEmptyLink","selectedBlockChildren","singleBlock","innerBlocksColors","without","__experimentalCaptureToolbars","ParentElement","canConvertToLink","removeSubmenu","newLinkBlock","normalizedTitle","normalizedURL","selectedPattern","__experimentalGetParsedPattern","PAGE_FIELDS","convertSelectedBlockToNavigationLinks","linkMap","navigationLinks","transformSubmenus","listOfLinks","listOfLinksArray","ConvertToLinksModal","pagesFinished","aria","describedby","PageItems","pagesByParentId","depth","frontPageId","canUser","site","show_on_front","page_on_front","isNavigationChild","totalPages","sortedPages","localeCompare","set","Map","usePageData","allowConvertToLinks","setOpen","dropCap","migrateCustomColorsAndFontSizes","restBlockAttributes","dir","fontSizeClass","getFontSizeClass","useOnEnter","duplicateBlocks","wrapperClientId","hasBlockSupport","wrapperBlock","animateVariants","hide","opacity","scaleY","show","exit","DropZone","paragraphElement","selectors","onBlockDrop","useOnBlockDrop","action","isDragging","setIsDragging","setIsVisible","popoverRef","useDropZone","onDragEnd","dropZoneRef","onDrop","onDragEnter","onDragLeave","reducedMotion","useReducedMotion","animate","placement","flip","resize","offsetWidth","offsetHeight","initial","ParagraphRTLControl","setDirection","formatLtr","hasDropCapDisabled","isDropCapFeatureEnabled","setParagraphElement","helpText","newDirection","newContent","__unstableEmbedURLOnPaste","__unstableAllowPrefixTransformations","queryId","isDescendentOfQueryLoop","authorId","authors","showAvatar","showBio","byline","avatarSizes","nextAuthorId","avatarSize","displayAuthorBiography","commentIdInput","setCommentIdInput","blockDefault","hasPostAndComments","blockStyles","commentsText","commentsNumber","toLocaleString","useCanEditEntity","recordId","canUserEditEntityRecord","ReadOnlyContent","userCanEdit","protected","EditableContent","Content","RecursionError","contextPostId","contextPostType","is12HourFormat","displayType","postTypeSlug","dateSettings","siteTimeFormat","time","setDate","postDate","Dropdown","renderContent","currentDate","is12Hour","renderToggle","DOWN","singular_name","moreText","showMoreOnNewLine","isEditable","rawExcerpt","setExcerpt","renderedExcerpt","isProtected","strippedRenderedExcerpt","readMoreLink","newMoreText","excerptClassName","excerptContent","AlignmentToolbar","newShowMoreOnNewLine","SCALE_OPTIONS","DEFAULT_SCALE","scaleHelp","cover","contain","scale","onDimensionChange","dimension","nextValue","parsedValue","scaleLabel","nextHeight","nextSizeSlug","overlayStyles","newDimRatio","PostFeaturedImageDisplay","setFeaturedImage","getMediaSourceUrlBySizeSlug","imageStyles","objectFit","mediaLibraryButton","showTooltip","tooltipPosition","previous","showTitle","linkLabel","isNext","PostTemplateInnerBlocks","MemoizedPostTemplateBlockPreview","blockContextId","setActiveBlockContextId","exclude","sticky","taxQuery","parents","restQueryArgs","queryContext","templateSlug","displayLayout","layoutType","previewPostType","activeBlockContextId","getTaxonomies","taxonomies","templateCategory","builtTaxQuery","entries","taxonomySlug","terms","taxonomy","rest_base","blockContexts","hasLayoutFlex","blockContext","ALLOWED_FORMATS","variationIconMap","postCategories","post_tag","enhanceVariations","term","separator","selectedTerm","getTaxonomy","visibility","publicly_queryable","postTerms","hasPostTerms","_isLoading","taxonomyArgs","usePostTerms","hasPost","blockInformation","useBlockDisplayInformation","postTerm","curr","no_terms","setTitle","fullTitle","titleElement","SOLID_COLOR_CLASS","citation","mainColor","customMainColor","parseBorderColor","styleString","matches","multilineToInline","multilineTag","__UNSTABLE_LINE_SEPARATOR","shouldShowCitation","figureClasses","figureStyles","borderColor","blockquoteTextColorClass","blockquoteClasses","blockquoteStyles","isSolidColorStyle","figureClass","getColorObjectByAttributeValues","blockquoteStyle","isWebPlatform","headingBlock","nextCitation","__unstableMobileNoFocusOnMount","QueryToolbar","setQuery","setDisplayLayout","openPatternSelectionModal","hasPatterns","__experimentalGetPatternsByBlockTypes","maxPageInputId","displayLayoutControls","contentClassName","isDragEnabled","orderOptions","newOrderBy","newOrder","getEntitiesInfo","entities","entity","mapById","mapByName","names","mapToIHasNameAndId","isControlAllowed","allowedControls","authorsInfo","sanitizedValue","FormTokenField","suggestions","entitiesMappedByName","authorValue","getIdByValue","add","Set","__experimentalShowHowTo","BASE_QUERY","setSearch","setSuggestions","debouncedSearch","useDebounce","searchResults","searchHasResolved","selectorArgs","currentParents","currentParentsInfo","entitiesInfo","onInputChange","useTaxonomiesInfo","useTaxonomies","termsQuery","_terms","TaxonomyControls","taxonomiesInfo","getExistingTaxQueryValue","taxonomyInfo","termId","newTermValues","termIds","termValue","termsMappedByName","termValueLower","toLocaleLowerCase","getTermIdByTermValue","newTaxQuery","stickyOptions","StickyControl","QueryInspectorControls","authorIds","getActiveBlockVariation","queryLoopName","useAllowedControls","showSticky","setShowSticky","postTypesTaxonomiesMap","postTypesSelectOptions","postTypes","getPostTypes","excludedPostTypes","viewable","usePostTypes","isPostTypeHierarchical","hierarchical","useIsPostTypeHierarchical","querySearch","setQuerySearch","onChangeDebounced","showInheritControl","showPostTypeControl","showColumnsControl","showOrderControl","showStickyControl","showSettingsPanel","updateQuery","supportedTaxonomies","updatedTaxQuery","resetAll","QueryContent","postsPerPage","newQuery","updateDisplayLayout","newDisplayLayout","QueryPlaceholder","isStartingBlank","setIsStartingBlank","allVariations","matchingVariation","getMatchingVariation","QueryVariationPicker","scopeVariations","PatternSelectionModal","setIsPatternSelectionModalOpen","blockPreviewContext","blockNameForPatterns","activeVariationName","blockName","activeVariationPatterns","useBlockNameForPatterns","onBlockPatternSelect","queryClientIds","queryBlockAttributes","blocksQueue","getTransformedBlocksFromPattern","titleDate","titleExcerpt","titleDateExcerpt","imageDateTitle","QUERY_DEFAULT_ATTRIBUTES","postList","migrateToTaxQuery","categoryIds","tagIds","withTaxQuery","restWithTaxQuery","CreateNewPostLink","newPostUrl","createHigherOrderComponent","BlockEdit","isPatternSelectionModalOpen","queryInspectorControls","QueryPaginationArrowControls","createPaginationItem","paginationNumbers","SUPPORTED_TYPES","showPrefix","showSearchTerm","migrateToQuoteV2","parseWithAttributeSchema","fontAppearance","blockquote","handler","isBlockSelected","BlockQuotation","useEntityRecord","isMissing","__experimentalConvertBlockToStatic","convertBlockToStatic","reusableBlocksStore","ungroup","feedURL","setIsEditing","blockLayout","itemsToShow","propName","rss","toolbarControls","buttonOnly","rx","buttonOutside","stroke","buttonInside","noButton","buttonWithIcon","toggleLabel","buttonText","widthUnit","insertedInNavigationBlock","typographyProps","useTypographyProps","unitControlInputId","isButtonPositionInside","isButtonPositionOutside","hasNoButton","hasOnlyButton","buttonPositionControls","renderTextField","textFieldClasses","textFieldStyles","renderButton","buttonStyles","stripHTML","getButtonPositionIcon","filteredWidth","newUnit","padBorderRadius","labelClassnames","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","isNonZeroBorderRadius","getWrapperStyles","hr","customColor","colorClass","currentColor","hasCustomColor","deprecatedOpacityWithNoColor","setDeprecatedOpacityWithNoColor","previousColor","useDeprecatedOpacity","HorizontalRule","removep","autop","ShortcodeEdit","ACCEPT_MEDIA_STRING","SiteLogo","shouldSyncIcon","setLogo","logoUrl","siteUrl","logoId","iconId","setIcon","canUserEdit","setNaturalSize","imgWrapper","ceil","imgEdit","syncSiteIconHelpText","siteLogoId","siteIconId","mediaItemData","isRequestingMediaItem","siteSettings","siteData","_siteLogo","site_logo","_readOnlyLogo","_canUserEdit","_siteLogoId","_siteIconId","site_icon","mediaItem","_isRequestingMediaItem","shouldForceSync","onSelectLogo","logoImage","placeholderClassName","siteTagline","setSiteTagline","readOnlySiteTagLine","siteTaglineContent","disableLineBreaks","LevelIcon","paragraph","LevelControl","allControls","currentLevel","readOnlyTitle","siteTitleContent","ChainIcon","service","SocialLinkURLPopover","setPopover","URLPopover","URLInput","nextURL","disableSuggestions","keyboardReturn","showLabels","iconColorValue","iconBackgroundColorValue","showURLPopover","IconComponent","getIconBySite","socialLinkName","getNameBySite","socialLinkLabel","iconColor","customIconColor","iconBackgroundColor","customIconBackgroundColor","providesContext","justifiedItemsRegex","sizeOptions","setIconBackgroundColor","setIconColor","logosOnly","backgroundBackup","SocialPlaceholder","SelectedSocialPlaceholder","__experimentalAppenderTagName","entry","check","enableAlpha","isLargeText","DimensionInput","availableUnitSettings","availableUnit","parsedUnit","SpacerControls","ResizableSpacer","getCurrentSize","getNextVal","nextVal","temporaryHeight","setTemporaryHeight","temporaryWidth","setTemporaryWidth","blockOrientation","oldColors","hasFixedLayout","cells","foot","hasCaption","Section","rowIndex","cellIndex","cellClasses","INHERITED_COLUMN_ATTRIBUTES","updateSelectedCell","updateCell","tableSections","sectionName","selectionSectionName","selectionRowIndex","cellAttributes","cellLocation","isCellSelected","insertRow","columnCount","firstRow","isEmptyTableSection","getFirstRow","cellCount","_","firstCellInColumn","insertColumn","isEmptyRow","toggleSection","ALIGNMENT_CONTROLS","alignLeft","alignCenter","alignRight","cellAriaLabel","TSection","tableContentPasteSchema","tr","allowEmpty","th","td","table","thead","tfoot","tbody","initialRowCount","setInitialRowCount","initialColumnCount","setInitialColumnCount","selectedCell","setSelectedCell","tableRef","hasTableCreated","setHasTableCreated","onInsertRow","newRowIndex","onInsertColumn","newColumnIndex","sections","tableControls","tableRowBefore","tableRowAfter","tableRowDelete","deleteRow","tableColumnBefore","tableColumnAfter","tableColumnDelete","cell","deleteColumn","renderedSections","CellTag","unstableOnFocus","alignmentControls","getCellAttribute","getCellAlignment","columnSelection","onChangeColumnAlignment","hasArrowIndicator","hasSplitBorders","rowCount","createTable","ENTRY_CLASS_NAME","TableOfContentsList","nestedHeadingList","heading","linearToNestedHeadingList","headingList","endOfSlice","headings","onlyIncludeCurrentPage","canInsertList","latestHeadings","getClientIdsWithDescendants","__experimentalGetGlobalBlocksByName","getGlobalBlocksByName","isPaginated","allBlockClientIds","tocPage","tocIndex","blockClientId","_latestHeadings","headingPage","permalink","getPermalink","headingPageLink","headingAttributes","canBeLinked","headingTree","showTagCounts","numberOfTags","smallestFontSize","largestFontSize","onFontSizeChange","fontSizeLabel","quantity","updateObj","currentValue","currentQuantity","currentUnit","selectedTaxonomy","__assign","lowerCase","DEFAULT_SPLIT_REGEXP","DEFAULT_STRIP_REGEXP","input","re","capitalCaseTransform","charAt","toUpperCase","upperCaseFirst","useAlternativeTemplateParts","excludedId","templateParts","_isResolving","templatePart","useAlternativeBlockPatterns","blockNameWithArea","useCreateTemplatePartFromBlocks","cleanSlug","useTemplatePartArea","selectedArea","defaultArea","area_tag","TitleModal","areaLabel","overlayClassName","TemplatePartPlaceholder","templatePartId","onOpenSelectionModal","blockPatterns","showTitleModal","setShowTitleModal","areaObject","createFromBlocks","normalizeSearchInput","getPatternSearchRank","searchValue","normalizedSearchValue","rank","searchPatterns","rankedPatterns","rank1","rank2","TemplatePartSelectionModal","setSearchValue","filteredTemplateParts","shownTemplateParts","useAsyncList","filteredBlockPatterns","shownBlockPatterns","onTemplatePartSelect","hasTemplateParts","hasBlockPatterns","SearchControl","shownPatterns","onClickPattern","TemplatePartAdvancedControls","defaultWrapper","setArea","areaOptions","_area","TemplatePartInnerBlocks","enhanceTemplatePartVariations","coreDataStore","iconName","headerIcon","footerIcon","sidebarIcon","symbolFilledIcon","symbolFilled","splitRegexp","stripRegexp","delimiter","end","noCase","capitalCase","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","isResolved","getEntityArgs","entityRecord","hasResolvedEntity","hasReplacements","canReplace","BlockSettingsMenuControls","BlockTitle","maximumLength","DISALLOWED_PARENTS","canInsert","disallowedParentType","mergedStyle","__unstablePreserveWhiteSpace","autoPlayHelpText","getAutoplayHelp","toggleFactory","onChangePreload","ALLOWED_TYPES","DEFAULT_KIND","KIND_OPTIONS","captionIcon","TrackList","tracks","onEditPress","track","SingleTrackEditor","srcLang","NavigableMenu","autoFocus","newSrcLang","changes","hasChanges","TracksEditor","trackBeingEdited","setTrackBeingEdited","newTrack","newTracks","_track","MediaUpload","trackIndex","MediaUploadCheck","FormFileUpload","openFileDialog","Tracks","VIDEO_POSTER_ALLOWED_MEDIA_TYPES","mp4","m4v","webm","ogv","flv","poster","VideoEdit","videoPlayer","posterImageButton","isTemporaryVideo","onSelectVideo","load","videoPosterDescription","hidden","getAllBlocks","gallery","quote","archives","audio","button","calendar","classic","commentAuthorAvatar","embed","latestComments","mediaText","missing","more","nextpage","pageList","preformatted","pullquote","reusableBlock","socialLink","socialLinks","spacer","tagCloud","textColumns","verse","navigationLink","navigationSubmenu","siteLogo","siteTitle","postFeaturedImage","postAuthor","postAuthorName","postComment","postCommentsCount","postCommentsLink","postNavigationLink","postTemplate","queryPagination","queryPaginationNext","queryPaginationNumbers","queryPaginationPrevious","queryNoResults","readMore","commentAuthorName","commentContent","commentEditLink","commentReplyLink","commentTemplate","commentsTitle","commentsPagination","commentsPaginationNext","commentsPaginationNumbers","commentsPaginationPrevious","postCommentsForm","tableOfContents","homeLink","logInOut","termDescription","queryTitle","postAuthorBiography","__experimentalGetCoreBlocks","isBlockMetadataExperimental","registerCoreBlocks","setDefaultBlockName","setFreeformContentHandlerName","setUnregisteredTypeHandlerName","setGroupingBlockName","__experimentalRegisterExperimentalCoreBlocks","enableFSEBlocks","enabledExperiments"],"sourceRoot":""}

Zerion Mini Shell 1.0