@wordpress/block-library 6.0.17 → 6.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/build/columns/index.js +1 -2
  2. package/build/columns/index.js.map +1 -1
  3. package/build/navigation/index.js +1 -5
  4. package/build/navigation/index.js.map +1 -1
  5. package/build/post-author/edit.js +1 -1
  6. package/build/post-author/edit.js.map +1 -1
  7. package/build/post-content/edit.js +1 -1
  8. package/build/post-content/edit.js.map +1 -1
  9. package/build/post-date/edit.js +1 -1
  10. package/build/post-date/edit.js.map +1 -1
  11. package/build/post-excerpt/edit.js +1 -1
  12. package/build/post-excerpt/edit.js.map +1 -1
  13. package/build/post-featured-image/edit.js +1 -1
  14. package/build/post-featured-image/edit.js.map +1 -1
  15. package/build/post-title/edit.js +1 -1
  16. package/build/post-title/edit.js.map +1 -1
  17. package/build/site-logo/edit.js +108 -10
  18. package/build/site-logo/edit.js.map +1 -1
  19. package/build/site-logo/index.js +5 -1
  20. package/build/site-logo/index.js.map +1 -1
  21. package/build/template-part/index.js +25 -1
  22. package/build/template-part/index.js.map +1 -1
  23. package/build-module/columns/index.js +1 -2
  24. package/build-module/columns/index.js.map +1 -1
  25. package/build-module/navigation/index.js +1 -5
  26. package/build-module/navigation/index.js.map +1 -1
  27. package/build-module/post-author/edit.js +1 -1
  28. package/build-module/post-author/edit.js.map +1 -1
  29. package/build-module/post-content/edit.js +1 -1
  30. package/build-module/post-content/edit.js.map +1 -1
  31. package/build-module/post-date/edit.js +1 -1
  32. package/build-module/post-date/edit.js.map +1 -1
  33. package/build-module/post-excerpt/edit.js +1 -1
  34. package/build-module/post-excerpt/edit.js.map +1 -1
  35. package/build-module/post-featured-image/edit.js +1 -1
  36. package/build-module/post-featured-image/edit.js.map +1 -1
  37. package/build-module/post-title/edit.js +1 -1
  38. package/build-module/post-title/edit.js.map +1 -1
  39. package/build-module/site-logo/edit.js +109 -11
  40. package/build-module/site-logo/edit.js.map +1 -1
  41. package/build-module/site-logo/index.js +5 -1
  42. package/build-module/site-logo/index.js.map +1 -1
  43. package/build-module/template-part/index.js +25 -1
  44. package/build-module/template-part/index.js.map +1 -1
  45. package/build-style/editor-rtl.css +18 -8
  46. package/build-style/editor.css +18 -8
  47. package/build-style/navigation/editor-rtl.css +13 -6
  48. package/build-style/navigation/editor.css +13 -6
  49. package/package.json +7 -7
  50. package/src/columns/block.json +1 -2
  51. package/src/editor.scss +5 -2
  52. package/src/navigation/block.json +1 -11
  53. package/src/navigation/editor.scss +18 -8
  54. package/src/post-author/edit.js +1 -1
  55. package/src/post-content/edit.js +1 -1
  56. package/src/post-content/index.php +6 -1
  57. package/src/post-date/edit.js +1 -1
  58. package/src/post-excerpt/edit.js +1 -1
  59. package/src/post-excerpt/index.php +1 -1
  60. package/src/post-featured-image/edit.js +1 -1
  61. package/src/post-title/edit.js +1 -1
  62. package/src/post-title/index.php +1 -1
  63. package/src/site-logo/block.json +5 -1
  64. package/src/site-logo/edit.js +124 -7
  65. package/src/site-logo/index.php +17 -0
  66. package/src/template-part/index.js +28 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/post-featured-image/edit.js"],"names":["useEntityProp","store","coreStore","useSelect","useDispatch","ToggleControl","PanelBody","Placeholder","Button","InspectorControls","BlockControls","MediaPlaceholder","MediaReplaceFlow","useBlockProps","__","sprintf","upload","SVG","Path","noticesStore","DimensionControls","placeholderIllustration","ALLOWED_MEDIA_TYPES","placeholderChip","PostFeaturedImageDisplay","attributes","setAttributes","context","postId","postType","queryId","isDescendentOfQueryLoop","isLink","height","width","scale","featuredImage","setFeaturedImage","media","select","getMedia","blockProps","style","placeholder","content","onSelectImage","value","id","createErrorNotice","onUploadError","message","type","image","label","open","source_url","alt_text","objectFit","PostFeaturedImageEdit","props"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tToggleControl,\n\tPanelBody,\n\tPlaceholder,\n\tButton,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\tBlockControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { upload } from '@wordpress/icons';\nimport { SVG, Path } from '@wordpress/primitives';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport DimensionControls from './dimension-controls';\n\nconst placeholderIllustration = (\n\t<SVG\n\t\tclassName=\"components-placeholder__illustration\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 60 60\"\n\t\tpreserveAspectRatio=\"none\"\n\t>\n\t\t<Path vectorEffect=\"non-scaling-stroke\" d=\"M60 60 0 0\" />\n\t</SVG>\n);\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst placeholderChip = (\n\t<div className=\"wp-block-post-featured-image__placeholder\">\n\t\t{ placeholderIllustration }\n\t</div>\n);\n\nfunction PostFeaturedImageDisplay( {\n\tattributes,\n\tsetAttributes,\n\tcontext: { postId, postType, queryId },\n} ) {\n\tconst isDescendentOfQueryLoop = !! queryId;\n\tconst { isLink, height, width, scale } = attributes;\n\tconst [ featuredImage, setFeaturedImage ] = 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\n\tconst blockProps = useBlockProps( {\n\t\tstyle: { width, height },\n\t} );\n\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder className=\"block-editor-media-placeholder\">\n\t\t\t\t{ placeholderIllustration }\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[ 2 ], { type: 'snackbar' } );\n\t};\n\n\tlet image;\n\tif ( ! featuredImage && isDescendentOfQueryLoop ) {\n\t\treturn <div { ...blockProps }>{ placeholderChip }</div>;\n\t}\n\n\tconst label = __( 'Add a featured image' );\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\tplaceholderChip\n\t\t) : (\n\t\t\t<img\n\t\t\t\tsrc={ media.source_url }\n\t\t\t\talt={ media.alt_text || __( 'Featured image' ) }\n\t\t\t\tstyle={ { height, objectFit: height && scale } }\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<DimensionControls\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ sprintf(\n\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__( 'Link to %s' ),\n\t\t\t\t\t\t\tpostType\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</PanelBody>\n\t\t\t</InspectorControls>\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={ media.source_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\tonError={ onUploadError }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<figure { ...blockProps }>{ image }</figure>\n\t\t</>\n\t);\n}\n\nexport default function PostFeaturedImageEdit( props ) {\n\tconst blockProps = useBlockProps();\n\tif ( ! props.context?.postId ) {\n\t\treturn <div { ...blockProps }>{ placeholderChip }</div>;\n\t}\n\treturn <PostFeaturedImageDisplay { ...props } />;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/post-featured-image/edit.js"],"names":["useEntityProp","store","coreStore","useSelect","useDispatch","ToggleControl","PanelBody","Placeholder","Button","InspectorControls","BlockControls","MediaPlaceholder","MediaReplaceFlow","useBlockProps","__","sprintf","upload","SVG","Path","noticesStore","DimensionControls","placeholderIllustration","ALLOWED_MEDIA_TYPES","placeholderChip","PostFeaturedImageDisplay","attributes","setAttributes","context","postId","postType","queryId","isDescendentOfQueryLoop","Number","isFinite","isLink","height","width","scale","featuredImage","setFeaturedImage","media","select","getMedia","blockProps","style","placeholder","content","onSelectImage","value","id","createErrorNotice","onUploadError","message","type","image","label","open","source_url","alt_text","objectFit","PostFeaturedImageEdit","props"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tToggleControl,\n\tPanelBody,\n\tPlaceholder,\n\tButton,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\tBlockControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { upload } from '@wordpress/icons';\nimport { SVG, Path } from '@wordpress/primitives';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport DimensionControls from './dimension-controls';\n\nconst placeholderIllustration = (\n\t<SVG\n\t\tclassName=\"components-placeholder__illustration\"\n\t\tfill=\"none\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 60 60\"\n\t\tpreserveAspectRatio=\"none\"\n\t>\n\t\t<Path vectorEffect=\"non-scaling-stroke\" d=\"M60 60 0 0\" />\n\t</SVG>\n);\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\nconst placeholderChip = (\n\t<div className=\"wp-block-post-featured-image__placeholder\">\n\t\t{ placeholderIllustration }\n\t</div>\n);\n\nfunction PostFeaturedImageDisplay( {\n\tattributes,\n\tsetAttributes,\n\tcontext: { postId, postType, queryId },\n} ) {\n\tconst isDescendentOfQueryLoop = Number.isFinite( queryId );\n\tconst { isLink, height, width, scale } = attributes;\n\tconst [ featuredImage, setFeaturedImage ] = 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\n\tconst blockProps = useBlockProps( {\n\t\tstyle: { width, height },\n\t} );\n\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder className=\"block-editor-media-placeholder\">\n\t\t\t\t{ placeholderIllustration }\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[ 2 ], { type: 'snackbar' } );\n\t};\n\n\tlet image;\n\tif ( ! featuredImage && isDescendentOfQueryLoop ) {\n\t\treturn <div { ...blockProps }>{ placeholderChip }</div>;\n\t}\n\n\tconst label = __( 'Add a featured image' );\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\tplaceholderChip\n\t\t) : (\n\t\t\t<img\n\t\t\t\tsrc={ media.source_url }\n\t\t\t\talt={ media.alt_text || __( 'Featured image' ) }\n\t\t\t\tstyle={ { height, objectFit: height && scale } }\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<DimensionControls\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t\t<PanelBody title={ __( 'Link settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ sprintf(\n\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__( 'Link to %s' ),\n\t\t\t\t\t\t\tpostType\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</PanelBody>\n\t\t\t</InspectorControls>\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={ media.source_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\tonError={ onUploadError }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<figure { ...blockProps }>{ image }</figure>\n\t\t</>\n\t);\n}\n\nexport default function PostFeaturedImageEdit( props ) {\n\tconst blockProps = useBlockProps();\n\tif ( ! props.context?.postId ) {\n\t\treturn <div { ...blockProps }>{ placeholderChip }</div>;\n\t}\n\treturn <PostFeaturedImageDisplay { ...props } />;\n}\n"]}
@@ -37,7 +37,7 @@ export default function PostTitleEdit(_ref) {
37
37
  }
38
38
  } = _ref;
39
39
  const TagName = 0 === level ? 'p' : 'h' + level;
40
- const isDescendentOfQueryLoop = !!queryId;
40
+ const isDescendentOfQueryLoop = Number.isFinite(queryId);
41
41
  const userCanEdit = useCanEditEntity('postType', postType, postId);
42
42
  const [rawTitle = '', setTitle, fullTitle] = useEntityProp('postType', postType, 'title', postId);
43
43
  const [link] = useEntityProp('postType', postType, 'link', postId);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/post-title/edit.js"],"names":["classnames","AlignmentControl","BlockControls","InspectorControls","useBlockProps","PlainText","RawHTML","ToggleControl","TextControl","PanelBody","__","useEntityProp","HeadingLevelDropdown","useCanEditEntity","PostTitleEdit","attributes","level","textAlign","isLink","rel","linkTarget","setAttributes","context","postType","postId","queryId","TagName","isDescendentOfQueryLoop","userCanEdit","rawTitle","setTitle","fullTitle","link","blockProps","className","titleElement","rendered","length","event","preventDefault","newLevel","nextAlign","value","newRel"],"mappings":"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","sourcesContent":["/**\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 { RawHTML } from '@wordpress/element';\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 = !! 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 { ...blockProps }>\n\t\t\t\t\t<RawHTML key=\"html\">{ fullTitle?.rendered }</RawHTML>\n\t\t\t\t</TagName>\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>\n\t\t\t\t\t\t<RawHTML key=\"html\">{ fullTitle?.rendered }</RawHTML>\n\t\t\t\t\t</a>\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"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/post-title/edit.js"],"names":["classnames","AlignmentControl","BlockControls","InspectorControls","useBlockProps","PlainText","RawHTML","ToggleControl","TextControl","PanelBody","__","useEntityProp","HeadingLevelDropdown","useCanEditEntity","PostTitleEdit","attributes","level","textAlign","isLink","rel","linkTarget","setAttributes","context","postType","postId","queryId","TagName","isDescendentOfQueryLoop","Number","isFinite","userCanEdit","rawTitle","setTitle","fullTitle","link","blockProps","className","titleElement","rendered","length","event","preventDefault","newLevel","nextAlign","value","newRel"],"mappings":"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","sourcesContent":["/**\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 { RawHTML } from '@wordpress/element';\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 { ...blockProps }>\n\t\t\t\t\t<RawHTML key=\"html\">{ fullTitle?.rendered }</RawHTML>\n\t\t\t\t</TagName>\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>\n\t\t\t\t\t\t<RawHTML key=\"html\">{ fullTitle?.rendered }</RawHTML>\n\t\t\t\t\t</a>\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"]}
@@ -10,7 +10,7 @@ import { includes, pick } from 'lodash';
10
10
  */
11
11
 
12
12
  import { isBlobURL } from '@wordpress/blob';
13
- import { useEffect, useState, useRef } from '@wordpress/element';
13
+ import { createInterpolateElement, useEffect, useState, useRef } from '@wordpress/element';
14
14
  import { __, isRTL } from '@wordpress/i18n';
15
15
  import { MenuItem, PanelBody, RangeControl, ResizableBox, Spinner, ToggleControl, ToolbarButton, Placeholder, Button } from '@wordpress/components';
16
16
  import { useViewportMatch } from '@wordpress/compose';
@@ -41,7 +41,8 @@ const SiteLogo = _ref => {
41
41
  width,
42
42
  height,
43
43
  isLink,
44
- linkTarget
44
+ linkTarget,
45
+ shouldSyncIcon
45
46
  },
46
47
  containerRef,
47
48
  isSelected,
@@ -49,7 +50,10 @@ const SiteLogo = _ref => {
49
50
  setLogo,
50
51
  logoUrl,
51
52
  siteUrl,
52
- logoId
53
+ logoId,
54
+ iconId,
55
+ setIcon,
56
+ canUserEdit
53
57
  } = _ref;
54
58
  const clientWidth = useClientWidth(containerRef, [align]);
55
59
  const isLargeViewport = useViewportMatch('medium');
@@ -80,6 +84,16 @@ const SiteLogo = _ref => {
80
84
  ...pick(getSettings(), ['imageEditing', 'maxWidth'])
81
85
  };
82
86
  }, []);
87
+ useEffect(() => {
88
+ // Turn the `Use as site icon` toggle off if it is on but the logo and icon have
89
+ // fallen out of sync. This can happen if the toggle is saved in the `on` position,
90
+ // but changes are later made to the site icon in the Customizer.
91
+ if (shouldSyncIcon && logoId !== iconId) {
92
+ setAttributes({
93
+ shouldSyncIcon: false
94
+ });
95
+ }
96
+ }, []);
83
97
  useEffect(() => {
84
98
  if (!isSelected) {
85
99
  setIsEditingImage(false);
@@ -228,6 +242,14 @@ const SiteLogo = _ref => {
228
242
  });
229
243
  }
230
244
  }, imgWrapper);
245
+ const syncSiteIconHelpText = createInterpolateElement(__('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>.'), {
246
+ a: // eslint-disable-next-line jsx-a11y/anchor-has-content
247
+ createElement("a", {
248
+ href: siteUrl + '/wp-admin/customize.php?autofocus[section]=title_tagline',
249
+ target: "_blank",
250
+ rel: "noopener noreferrer"
251
+ })
252
+ });
231
253
  return createElement(Fragment, null, createElement(InspectorControls, null, createElement(PanelBody, {
232
254
  title: __('Settings')
233
255
  }, createElement(RangeControl, {
@@ -252,6 +274,16 @@ const SiteLogo = _ref => {
252
274
  linkTarget: value ? '_blank' : '_self'
253
275
  }),
254
276
  checked: linkTarget === '_blank'
277
+ })), canUserEdit && createElement(Fragment, null, createElement(ToggleControl, {
278
+ label: __('Use as site icon'),
279
+ onChange: value => {
280
+ setAttributes({
281
+ shouldSyncIcon: value
282
+ });
283
+ setIcon(value ? logoId : undefined);
284
+ },
285
+ checked: !!shouldSyncIcon,
286
+ help: syncSiteIconHelpText
255
287
  })))), createElement(BlockControls, {
256
288
  group: "block"
257
289
  }, canEditImage && !isEditingImage && createElement(ToolbarButton, {
@@ -269,7 +301,9 @@ export default function LogoEdit(_ref2) {
269
301
  isSelected
270
302
  } = _ref2;
271
303
  const {
272
- width
304
+ className: styleClass,
305
+ width,
306
+ shouldSyncIcon
273
307
  } = attributes;
274
308
  const [logoUrl, setLogoUrl] = useState();
275
309
  const ref = useRef();
@@ -277,6 +311,7 @@ export default function LogoEdit(_ref2) {
277
311
  siteLogoId,
278
312
  canUserEdit,
279
313
  url,
314
+ siteIconId,
280
315
  mediaItemData,
281
316
  isRequestingMediaItem
282
317
  } = useSelect(select => {
@@ -296,6 +331,8 @@ export default function LogoEdit(_ref2) {
296
331
 
297
332
  const _siteLogoId = _canUserEdit ? _siteLogo : _readOnlyLogo;
298
333
 
334
+ const _siteIconId = siteSettings === null || siteSettings === void 0 ? void 0 : siteSettings.site_icon;
335
+
299
336
  const mediaItem = _siteLogoId && select(coreStore).getMedia(_siteLogoId, {
300
337
  context: 'view'
301
338
  });
@@ -313,15 +350,54 @@ export default function LogoEdit(_ref2) {
313
350
  url: mediaItem.source_url,
314
351
  alt: mediaItem.alt_text
315
352
  },
316
- isRequestingMediaItem: _isRequestingMediaItem
353
+ isRequestingMediaItem: _isRequestingMediaItem,
354
+ siteIconId: _siteIconId
317
355
  };
318
356
  }, []);
357
+ const {
358
+ getGlobalBlockCount
359
+ } = useSelect(blockEditorStore);
319
360
  const {
320
361
  editEntityRecord
321
362
  } = useDispatch(coreStore);
363
+ useEffect(() => {
364
+ // Cleanup function to discard unsaved changes to the icon and logo when
365
+ // the block is removed.
366
+ return () => {
367
+ // Do nothing if the block is being rendered in the styles preview or the
368
+ // block inserter.
369
+ if (styleClass !== null && styleClass !== void 0 && styleClass.includes('block-editor-block-types-list__site-logo-example') || styleClass !== null && styleClass !== void 0 && styleClass.includes('block-editor-block-styles__block-preview-container')) {
370
+ return;
371
+ }
372
+
373
+ const logoBlockCount = getGlobalBlockCount('core/site-logo'); // Only discard unsaved changes if we are removing the last Site Logo block
374
+ // on the page.
375
+
376
+ if (logoBlockCount === 0) {
377
+ editEntityRecord('root', 'site', undefined, {
378
+ site_logo: undefined,
379
+ site_icon: undefined
380
+ });
381
+ }
382
+ };
383
+ }, []);
384
+
385
+ const setLogo = function (newValue) {
386
+ let shouldForceSync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
387
+
388
+ // `shouldForceSync` is used to force syncing when the attribute
389
+ // may not have updated yet.
390
+ if (shouldSyncIcon || shouldForceSync) {
391
+ setIcon(newValue);
392
+ }
322
393
 
323
- const setLogo = newValue => editEntityRecord('root', 'site', undefined, {
324
- site_logo: newValue
394
+ editEntityRecord('root', 'site', undefined, {
395
+ site_logo: newValue
396
+ });
397
+ };
398
+
399
+ const setIcon = newValue => editEntityRecord('root', 'site', undefined, {
400
+ site_icon: newValue
325
401
  });
326
402
 
327
403
  let alt = null;
@@ -334,7 +410,26 @@ export default function LogoEdit(_ref2) {
334
410
  }
335
411
  }
336
412
 
337
- const onSelectLogo = media => {
413
+ const onInitialSelectLogo = media => {
414
+ // Initialize the syncSiteIcon toggle. If we currently have no Site logo and no
415
+ // site icon, automatically sync the logo to the icon.
416
+ if (shouldSyncIcon === undefined) {
417
+ const shouldForceSync = !siteIconId;
418
+ setAttributes({
419
+ shouldSyncIcon: shouldForceSync
420
+ }); // Because we cannot rely on the `shouldSyncIcon` attribute to have updated by
421
+ // the time `setLogo` is called, pass an argument to force the syncing.
422
+
423
+ onSelectLogo(media, shouldForceSync);
424
+ return;
425
+ }
426
+
427
+ onSelectLogo(media);
428
+ };
429
+
430
+ const onSelectLogo = function (media) {
431
+ let shouldForceSync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
432
+
338
433
  if (!media) {
339
434
  return;
340
435
  }
@@ -346,7 +441,7 @@ export default function LogoEdit(_ref2) {
346
441
  return;
347
442
  }
348
443
 
349
- setLogo(media.id);
444
+ setLogo(media.id, shouldForceSync);
350
445
  };
351
446
 
352
447
  const onRemoveLogo = () => {
@@ -396,7 +491,10 @@ export default function LogoEdit(_ref2) {
396
491
  logoUrl: logoUrl,
397
492
  setLogo: setLogo,
398
493
  logoId: (mediaItemData === null || mediaItemData === void 0 ? void 0 : mediaItemData.id) || siteLogoId,
399
- siteUrl: url
494
+ siteUrl: url,
495
+ setIcon: setIcon,
496
+ iconId: siteIconId,
497
+ canUserEdit: canUserEdit
400
498
  });
401
499
  }
402
500
 
@@ -431,7 +529,7 @@ export default function LogoEdit(_ref2) {
431
529
  }, isLoading && createElement("span", {
432
530
  className: "components-placeholder__preview"
433
531
  }, createElement(Spinner, null))), !logoUrl && canUserEdit && createElement(MediaPlaceholder, {
434
- onSelect: onSelectLogo,
532
+ onSelect: onInitialSelectLogo,
435
533
  accept: ACCEPT_MEDIA_STRING,
436
534
  allowedTypes: ALLOWED_MEDIA_TYPES,
437
535
  onError: onUploadError,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/site-logo/edit.js"],"names":["classnames","includes","pick","isBlobURL","useEffect","useState","useRef","__","isRTL","MenuItem","PanelBody","RangeControl","ResizableBox","Spinner","ToggleControl","ToolbarButton","Placeholder","Button","useViewportMatch","BlockControls","InspectorControls","MediaPlaceholder","MediaReplaceFlow","useBlockProps","store","blockEditorStore","__experimentalImageEditor","ImageEditor","__experimentalImageEditingProvider","ImageEditingProvider","useSelect","useDispatch","coreStore","crop","upload","SVG","Path","noticesStore","useClientWidth","MIN_SIZE","ALLOWED_MEDIA_TYPES","ACCEPT_MEDIA_STRING","SiteLogo","alt","attributes","align","width","height","isLink","linkTarget","containerRef","isSelected","setAttributes","setLogo","logoUrl","siteUrl","logoId","clientWidth","isLargeViewport","isWideAligned","isResizable","naturalWidth","naturalHeight","setNaturalSize","isEditingImage","setIsEditingImage","toggleSelection","classes","imageEditing","maxWidth","title","select","getSettings","siteEntities","getEditedEntityRecord","onResizeStart","onResizeStop","img","event","target","imgWrapper","preventDefault","imageWidthWithinContainer","exceedMaxWidth","defaultWidth","currentWidth","ratio","currentHeight","minWidth","minHeight","maxWidthBuffer","showRightHandle","showLeftHandle","canEditImage","imgEdit","imageAttributes","id","top","right","bottom","left","direction","elt","delta","parseInt","newWidth","Math","min","value","LogoEdit","className","setLogoUrl","ref","siteLogoId","canUserEdit","url","mediaItemData","isRequestingMediaItem","canUser","getEntityRecord","siteSettings","siteData","_siteLogo","site_logo","_readOnlyLogo","_canUserEdit","_siteLogoId","mediaItem","getMedia","context","_isRequestingMediaItem","hasFinishedResolution","source_url","alt_text","editEntityRecord","newValue","undefined","onSelectLogo","media","onRemoveLogo","createErrorNotice","onUploadError","message","type","controls","logoImage","isLoading","placeholder","content","placeholderClassName","blockProps","label","open"],"mappings":"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","sourcesContent":["/**\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 { useEffect, useState, useRef } 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 { SVG, Path } from '@wordpress/primitives';\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 },\n\tcontainerRef,\n\tisSelected,\n\tsetAttributes,\n\tsetLogo,\n\tlogoUrl,\n\tsiteUrl,\n\tlogoId,\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\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 = naturalWidth < naturalHeight ? MIN_SIZE : MIN_SIZE * ratio;\n\tconst minHeight =\n\t\tnaturalHeight < naturalWidth ? MIN_SIZE : 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\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</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 } = attributes;\n\tconst [ logoUrl, setLogoUrl ] = useState();\n\tconst ref = useRef();\n\n\tconst {\n\t\tsiteLogoId,\n\t\tcanUserEdit,\n\t\turl,\n\t\tmediaItemData,\n\t\tisRequestingMediaItem,\n\t} = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord, getEditedEntityRecord } = select(\n\t\t\tcoreStore\n\t\t);\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 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\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\t\tid: mediaItem.id,\n\t\t\t\turl: mediaItem.source_url,\n\t\t\t\talt: mediaItem.alt_text,\n\t\t\t},\n\t\t\tisRequestingMediaItem: _isRequestingMediaItem,\n\t\t};\n\t}, [] );\n\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst setLogo = ( newValue ) =>\n\t\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\tsite_logo: newValue,\n\t\t} );\n\n\tlet alt = null;\n\tif ( mediaItemData ) {\n\t\talt = mediaItemData.alt;\n\t\tif ( logoUrl !== mediaItemData.url ) {\n\t\t\tsetLogoUrl( mediaItemData.url );\n\t\t}\n\t}\n\tconst onSelectLogo = ( media ) => {\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\tsetLogoUrl( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetLogo( media.id );\n\t};\n\n\tconst onRemoveLogo = () => {\n\t\tsetLogo( null );\n\t\tsetLogoUrl( undefined );\n\t\tsetAttributes( { width: undefined } );\n\t};\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message[ 2 ], { 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/>\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>\n\t\t\t\t{\n\t\t\t\t\t<SVG\n\t\t\t\t\t\tclassName=\"components-placeholder__illustration\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 60 60\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Path\n\t\t\t\t\t\t\tvectorEffect=\"non-scaling-stroke\"\n\t\t\t\t\t\t\td=\"m61 32.622-13.555-9.137-15.888 9.859a5 5 0 0 1-5.386-.073l-9.095-5.989L1 37.5\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SVG>\n\t\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={ onSelectLogo }\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"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/site-logo/edit.js"],"names":["classnames","includes","pick","isBlobURL","createInterpolateElement","useEffect","useState","useRef","__","isRTL","MenuItem","PanelBody","RangeControl","ResizableBox","Spinner","ToggleControl","ToolbarButton","Placeholder","Button","useViewportMatch","BlockControls","InspectorControls","MediaPlaceholder","MediaReplaceFlow","useBlockProps","store","blockEditorStore","__experimentalImageEditor","ImageEditor","__experimentalImageEditingProvider","ImageEditingProvider","useSelect","useDispatch","coreStore","crop","upload","SVG","Path","noticesStore","useClientWidth","MIN_SIZE","ALLOWED_MEDIA_TYPES","ACCEPT_MEDIA_STRING","SiteLogo","alt","attributes","align","width","height","isLink","linkTarget","shouldSyncIcon","containerRef","isSelected","setAttributes","setLogo","logoUrl","siteUrl","logoId","iconId","setIcon","canUserEdit","clientWidth","isLargeViewport","isWideAligned","isResizable","naturalWidth","naturalHeight","setNaturalSize","isEditingImage","setIsEditingImage","toggleSelection","classes","imageEditing","maxWidth","title","select","getSettings","siteEntities","getEditedEntityRecord","onResizeStart","onResizeStop","img","event","target","imgWrapper","preventDefault","imageWidthWithinContainer","exceedMaxWidth","defaultWidth","currentWidth","ratio","currentHeight","minWidth","minHeight","maxWidthBuffer","showRightHandle","showLeftHandle","canEditImage","imgEdit","imageAttributes","id","top","right","bottom","left","direction","elt","delta","parseInt","syncSiteIconHelpText","a","newWidth","Math","min","value","undefined","LogoEdit","className","styleClass","setLogoUrl","ref","siteLogoId","url","siteIconId","mediaItemData","isRequestingMediaItem","canUser","getEntityRecord","siteSettings","siteData","_siteLogo","site_logo","_readOnlyLogo","_canUserEdit","_siteLogoId","_siteIconId","site_icon","mediaItem","getMedia","context","_isRequestingMediaItem","hasFinishedResolution","source_url","alt_text","getGlobalBlockCount","editEntityRecord","logoBlockCount","newValue","shouldForceSync","onInitialSelectLogo","media","onSelectLogo","onRemoveLogo","createErrorNotice","onUploadError","message","type","controls","logoImage","isLoading","placeholder","content","placeholderClassName","blockProps","label","open"],"mappings":"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","sourcesContent":["/**\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 { SVG, Path } from '@wordpress/primitives';\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 = naturalWidth < naturalHeight ? MIN_SIZE : MIN_SIZE * ratio;\n\tconst minHeight =\n\t\tnaturalHeight < naturalWidth ? MIN_SIZE : 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 { className: styleClass, width, shouldSyncIcon } = attributes;\n\tconst [ logoUrl, setLogoUrl ] = useState();\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 } = select(\n\t\t\tcoreStore\n\t\t);\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\t\tid: mediaItem.id,\n\t\t\t\turl: mediaItem.source_url,\n\t\t\t\talt: mediaItem.alt_text,\n\t\t\t},\n\t\t\tisRequestingMediaItem: _isRequestingMediaItem,\n\t\t\tsiteIconId: _siteIconId,\n\t\t};\n\t}, [] );\n\n\tconst { getGlobalBlockCount } = useSelect( blockEditorStore );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tuseEffect( () => {\n\t\t// Cleanup function to discard unsaved changes to the icon and logo when\n\t\t// the block is removed.\n\t\treturn () => {\n\t\t\t// Do nothing if the block is being rendered in the styles preview or the\n\t\t\t// block inserter.\n\t\t\tif (\n\t\t\t\tstyleClass?.includes(\n\t\t\t\t\t'block-editor-block-types-list__site-logo-example'\n\t\t\t\t) ||\n\t\t\t\tstyleClass?.includes(\n\t\t\t\t\t'block-editor-block-styles__block-preview-container'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst logoBlockCount = getGlobalBlockCount( 'core/site-logo' );\n\n\t\t\t// Only discard unsaved changes if we are removing the last Site Logo block\n\t\t\t// on the page.\n\t\t\tif ( logoBlockCount === 0 ) {\n\t\t\t\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\t\t\tsite_logo: undefined,\n\t\t\t\t\tsite_icon: undefined,\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\t}, [] );\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\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\tsite_icon: newValue,\n\t\t} );\n\n\tlet alt = null;\n\tif ( mediaItemData ) {\n\t\talt = mediaItemData.alt;\n\t\tif ( logoUrl !== mediaItemData.url ) {\n\t\t\tsetLogoUrl( mediaItemData.url );\n\t\t}\n\t}\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\tsetLogoUrl( media.url );\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\tsetLogoUrl( undefined );\n\t\tsetAttributes( { width: undefined } );\n\t};\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message[ 2 ], { 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>\n\t\t\t\t{\n\t\t\t\t\t<SVG\n\t\t\t\t\t\tclassName=\"components-placeholder__illustration\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 60 60\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Path\n\t\t\t\t\t\t\tvectorEffect=\"non-scaling-stroke\"\n\t\t\t\t\t\t\td=\"m61 32.622-13.555-9.137-15.888 9.859a5 5 0 0 1-5.386-.073l-9.095-5.989L1 37.5\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SVG>\n\t\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"]}
@@ -24,12 +24,16 @@ const metadata = {
24
24
  linkTarget: {
25
25
  type: "string",
26
26
  "default": "_self"
27
+ },
28
+ shouldSyncIcon: {
29
+ type: "boolean"
27
30
  }
28
31
  },
29
32
  example: {
30
33
  viewportWidth: 500,
31
34
  attributes: {
32
- width: 350
35
+ width: 350,
36
+ className: "block-editor-block-types-list__site-logo-example"
33
37
  }
34
38
  },
35
39
  supports: {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/site-logo/index.js"],"names":["siteLogo","icon","edit","name","metadata","settings"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,IAAIC,IAArB,QAAiC,kBAAjC;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAOC,IAAP,MAAiB,QAAjB;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAWC,QAAjB;AACA,SAASA,QAAT,EAAmBD,IAAnB;AAEA,OAAO,MAAME,QAAQ,GAAG;AACvBJ,EAAAA,IADuB;AAEvBC,EAAAA;AAFuB,CAAjB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { siteLogo as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\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"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/site-logo/index.js"],"names":["siteLogo","icon","edit","name","metadata","settings"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,IAAIC,IAArB,QAAiC,kBAAjC;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAOC,IAAP,MAAiB,QAAjB;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAWC,QAAjB;AACA,SAASA,QAAT,EAAmBD,IAAnB;AAEA,OAAO,MAAME,QAAQ,GAAG;AACvBJ,EAAAA,IADuB;AAEvBC,EAAAA;AAFuB,CAAjB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { siteLogo as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\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"]}
@@ -83,5 +83,29 @@ export const settings = {
83
83
  edit
84
84
  }; // Importing this file includes side effects. This is whitelisted in block-library/package.json under sideEffects
85
85
 
86
- addFilter('blocks.registerBlockType', 'core/template-part', enhanceTemplatePartVariations);
86
+ addFilter('blocks.registerBlockType', 'core/template-part', enhanceTemplatePartVariations); // Prevent adding template parts inside post templates.
87
+
88
+ const DISALLOWED_PARENTS = ['core/post-template', 'core/post-content'];
89
+ addFilter('blockEditor.__unstableCanInsertBlockType', 'removeTemplatePartsFromPostTemplates', (can, blockType, rootClientId, _ref2) => {
90
+ let {
91
+ getBlock,
92
+ getBlockParentsByBlockName
93
+ } = _ref2;
94
+
95
+ if (blockType.name !== 'core/template-part') {
96
+ return can;
97
+ }
98
+
99
+ for (const disallowedParentType of DISALLOWED_PARENTS) {
100
+ var _getBlock;
101
+
102
+ const hasDisallowedParent = ((_getBlock = getBlock(rootClientId)) === null || _getBlock === void 0 ? void 0 : _getBlock.name) === disallowedParentType || getBlockParentsByBlockName(rootClientId, disallowedParentType).length;
103
+
104
+ if (hasDisallowedParent) {
105
+ return false;
106
+ }
107
+ }
108
+
109
+ return true;
110
+ });
87
111
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/template-part/index.js"],"names":["startCase","store","coreDataStore","select","symbolFilled","addFilter","edit","enhanceTemplatePartVariations","name","metadata","settings","icon","__experimentalLabel","slug","theme","entity","getEntityRecord","title","rendered"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,QAA1B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,aAAlB,QAAuC,sBAAvC;AACA,SAASC,MAAT,QAAuB,iBAAvB;AACA,SAASC,YAAT,QAA6B,kBAA7B;AACA,SAASC,SAAT,QAA0B,kBAA1B;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAOC,IAAP,MAAiB,QAAjB;AACA,SAASC,6BAAT,QAA8C,cAA9C;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAWC,QAAjB;AACA,SAASA,QAAT,EAAmBD,IAAnB;AAEA,OAAO,MAAME,QAAQ,GAAG;AACvBC,EAAAA,IAAI,EAAEP,YADiB;AAEvBQ,EAAAA,mBAAmB,EAAE,QAAuB;AAAA;;AAAA,QAArB;AAAEC,MAAAA,IAAF;AAAQC,MAAAA;AAAR,KAAqB;;AAC3C;AACA;AACA,QAAK,CAAED,IAAP,EAAc;AACb;AACA;;AAED,UAAME,MAAM,GAAGZ,MAAM,CAAED,aAAF,CAAN,CAAwBc,eAAxB,CACd,UADc,EAEd,kBAFc,EAGdF,KAAK,GAAG,IAAR,GAAeD,IAHD,CAAf;;AAKA,QAAK,CAAEE,MAAP,EAAgB;AACf;AACA;;AAED,WAAOf,SAAS,CAAE,kBAAAe,MAAM,CAACE,KAAP,gEAAcC,QAAd,KAA0BH,MAAM,CAACF,IAAnC,CAAhB;AACA,GAnBsB;AAoBvBP,EAAAA;AApBuB,CAAjB,C,CAuBP;;AACAD,SAAS,CACR,0BADQ,EAER,oBAFQ,EAGRE,6BAHQ,CAAT","sourcesContent":["/**\n * External dependencies\n */\nimport { startCase } from 'lodash';\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';\n\n/**\n * Internal dependencies\n */\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 startCase( entity.title?.rendered || entity.slug );\n\t},\n\tedit,\n};\n\n// Importing this file includes side effects. This is whitelisted in block-library/package.json under sideEffects\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/template-part',\n\tenhanceTemplatePartVariations\n);\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/template-part/index.js"],"names":["startCase","store","coreDataStore","select","symbolFilled","addFilter","edit","enhanceTemplatePartVariations","name","metadata","settings","icon","__experimentalLabel","slug","theme","entity","getEntityRecord","title","rendered","DISALLOWED_PARENTS","can","blockType","rootClientId","getBlock","getBlockParentsByBlockName","disallowedParentType","hasDisallowedParent","length"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,QAA1B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,aAAlB,QAAuC,sBAAvC;AACA,SAASC,MAAT,QAAuB,iBAAvB;AACA,SAASC,YAAT,QAA6B,kBAA7B;AACA,SAASC,SAAT,QAA0B,kBAA1B;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAOC,IAAP,MAAiB,QAAjB;AACA,SAASC,6BAAT,QAA8C,cAA9C;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAWC,QAAjB;AACA,SAASA,QAAT,EAAmBD,IAAnB;AAEA,OAAO,MAAME,QAAQ,GAAG;AACvBC,EAAAA,IAAI,EAAEP,YADiB;AAEvBQ,EAAAA,mBAAmB,EAAE,QAAuB;AAAA;;AAAA,QAArB;AAAEC,MAAAA,IAAF;AAAQC,MAAAA;AAAR,KAAqB;;AAC3C;AACA;AACA,QAAK,CAAED,IAAP,EAAc;AACb;AACA;;AAED,UAAME,MAAM,GAAGZ,MAAM,CAAED,aAAF,CAAN,CAAwBc,eAAxB,CACd,UADc,EAEd,kBAFc,EAGdF,KAAK,GAAG,IAAR,GAAeD,IAHD,CAAf;;AAKA,QAAK,CAAEE,MAAP,EAAgB;AACf;AACA;;AAED,WAAOf,SAAS,CAAE,kBAAAe,MAAM,CAACE,KAAP,gEAAcC,QAAd,KAA0BH,MAAM,CAACF,IAAnC,CAAhB;AACA,GAnBsB;AAoBvBP,EAAAA;AApBuB,CAAjB,C,CAuBP;;AACAD,SAAS,CACR,0BADQ,EAER,oBAFQ,EAGRE,6BAHQ,CAAT,C,CAMA;;AACA,MAAMY,kBAAkB,GAAG,CAAE,oBAAF,EAAwB,mBAAxB,CAA3B;AACAd,SAAS,CACR,0CADQ,EAER,sCAFQ,EAGR,CACCe,GADD,EAECC,SAFD,EAGCC,YAHD,YAKK;AAAA,MADJ;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GACI;;AACJ,MAAKH,SAAS,CAACb,IAAV,KAAmB,oBAAxB,EAA+C;AAC9C,WAAOY,GAAP;AACA;;AAED,OAAM,MAAMK,oBAAZ,IAAoCN,kBAApC,EAAyD;AAAA;;AACxD,UAAMO,mBAAmB,GACxB,cAAAH,QAAQ,CAAED,YAAF,CAAR,wDAA0Bd,IAA1B,MAAmCiB,oBAAnC,IACAD,0BAA0B,CAAEF,YAAF,EAAgBG,oBAAhB,CAA1B,CACEE,MAHH;;AAIA,QAAKD,mBAAL,EAA2B;AAC1B,aAAO,KAAP;AACA;AACD;;AACD,SAAO,IAAP;AACA,CAvBO,CAAT","sourcesContent":["/**\n * External dependencies\n */\nimport { startCase } from 'lodash';\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';\n\n/**\n * Internal dependencies\n */\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 startCase( entity.title?.rendered || entity.slug );\n\t},\n\tedit,\n};\n\n// Importing this file includes side effects. This is whitelisted in block-library/package.json under sideEffects\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/template-part',\n\tenhanceTemplatePartVariations\n);\n\n// Prevent adding template parts inside post templates.\nconst DISALLOWED_PARENTS = [ 'core/post-template', 'core/post-content' ];\naddFilter(\n\t'blockEditor.__unstableCanInsertBlockType',\n\t'removeTemplatePartsFromPostTemplates',\n\t(\n\t\tcan,\n\t\tblockType,\n\t\trootClientId,\n\t\t{ getBlock, getBlockParentsByBlockName }\n\t) => {\n\t\tif ( blockType.name !== 'core/template-part' ) {\n\t\t\treturn can;\n\t\t}\n\n\t\tfor ( const disallowedParentType of DISALLOWED_PARENTS ) {\n\t\t\tconst hasDisallowedParent =\n\t\t\t\tgetBlock( rootClientId )?.name === disallowedParentType ||\n\t\t\t\tgetBlockParentsByBlockName( rootClientId, disallowedParentType )\n\t\t\t\t\t.length;\n\t\t\tif ( hasDisallowedParent ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n);\n"]}