@wordpress/block-library 8.31.0 → 8.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/block/edit.js +5 -8
- package/build/block/edit.js.map +1 -1
- package/build/button/edit.native.js +1 -1
- package/build/button/edit.native.js.map +1 -1
- package/build/image/edit.js +10 -39
- package/build/image/edit.js.map +1 -1
- package/build/image/image.js +27 -6
- package/build/image/image.js.map +1 -1
- package/build/navigation/view.js +12 -2
- package/build/navigation/view.js.map +1 -1
- package/build/navigation-link/edit.js +41 -18
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-submenu/edit.js +27 -9
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/pattern/edit.js +3 -1
- package/build/pattern/edit.js.map +1 -1
- package/build/post-featured-image/edit.js +12 -3
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/post-featured-image/index.js +8 -3
- package/build/post-featured-image/index.js.map +1 -1
- package/build/post-featured-image/overlay-controls.js +82 -0
- package/build/post-featured-image/overlay-controls.js.map +1 -0
- package/build/post-featured-image/overlay.js +5 -54
- package/build/post-featured-image/overlay.js.map +1 -1
- package/build/quote/edit.js +18 -23
- package/build/quote/edit.js.map +1 -1
- package/build/site-tagline/edit.js +13 -4
- package/build/site-tagline/edit.js.map +1 -1
- package/build/site-tagline/index.js +4 -0
- package/build/site-tagline/index.js.map +1 -1
- package/build/template-part/edit/index.js +55 -47
- package/build/template-part/edit/index.js.map +1 -1
- package/build/template-part/edit/inner-blocks.js +106 -10
- package/build/template-part/edit/inner-blocks.js.map +1 -1
- package/build/template-part/edit/selection-modal.js +1 -9
- package/build/template-part/edit/selection-modal.js.map +1 -1
- package/build/utils/caption.js +19 -13
- package/build/utils/caption.js.map +1 -1
- package/build/utils/hooks.js +1 -0
- package/build/utils/hooks.js.map +1 -1
- package/build-module/block/edit.js +5 -8
- package/build-module/block/edit.js.map +1 -1
- package/build-module/button/edit.native.js +1 -1
- package/build-module/button/edit.native.js.map +1 -1
- package/build-module/image/edit.js +11 -40
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/image.js +27 -6
- package/build-module/image/image.js.map +1 -1
- package/build-module/navigation/view.js +12 -2
- package/build-module/navigation/view.js.map +1 -1
- package/build-module/navigation-link/edit.js +43 -20
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +27 -9
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/pattern/edit.js +3 -1
- package/build-module/pattern/edit.js.map +1 -1
- package/build-module/post-featured-image/edit.js +12 -3
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/post-featured-image/index.js +8 -3
- package/build-module/post-featured-image/index.js.map +1 -1
- package/build-module/post-featured-image/overlay-controls.js +75 -0
- package/build-module/post-featured-image/overlay-controls.js.map +1 -0
- package/build-module/post-featured-image/overlay.js +7 -56
- package/build-module/post-featured-image/overlay.js.map +1 -1
- package/build-module/quote/edit.js +20 -25
- package/build-module/quote/edit.js.map +1 -1
- package/build-module/site-tagline/edit.js +14 -5
- package/build-module/site-tagline/edit.js.map +1 -1
- package/build-module/site-tagline/index.js +4 -0
- package/build-module/site-tagline/index.js.map +1 -1
- package/build-module/template-part/edit/index.js +58 -50
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/template-part/edit/inner-blocks.js +108 -12
- package/build-module/template-part/edit/inner-blocks.js.map +1 -1
- package/build-module/template-part/edit/selection-modal.js +2 -10
- package/build-module/template-part/edit/selection-modal.js.map +1 -1
- package/build-module/utils/caption.js +19 -13
- package/build-module/utils/caption.js.map +1 -1
- package/build-module/utils/hooks.js +1 -0
- package/build-module/utils/hooks.js.map +1 -1
- package/build-style/audio/theme-rtl.css +1 -1
- package/build-style/audio/theme.css +1 -1
- package/build-style/cover/style-rtl.css +5 -2
- package/build-style/cover/style.css +5 -2
- package/build-style/editor-rtl.css +12 -8
- package/build-style/editor.css +12 -8
- package/build-style/embed/theme-rtl.css +1 -1
- package/build-style/embed/theme.css +1 -1
- package/build-style/image/theme-rtl.css +1 -1
- package/build-style/image/theme.css +1 -1
- package/build-style/pullquote/theme-rtl.css +2 -1
- package/build-style/pullquote/theme.css +2 -1
- package/build-style/quote/theme-rtl.css +6 -6
- package/build-style/quote/theme.css +6 -6
- package/build-style/search/style-rtl.css +10 -0
- package/build-style/search/style.css +10 -0
- package/build-style/social-links/editor-rtl.css +0 -4
- package/build-style/social-links/editor.css +0 -4
- package/build-style/style-rtl.css +15 -2
- package/build-style/style.css +15 -2
- package/build-style/table/theme-rtl.css +4 -3
- package/build-style/table/theme.css +4 -3
- package/build-style/template-part/editor-rtl.css +12 -4
- package/build-style/template-part/editor.css +12 -4
- package/build-style/template-part/theme-rtl.css +1 -1
- package/build-style/template-part/theme.css +1 -1
- package/build-style/theme-rtl.css +17 -15
- package/build-style/theme.css +17 -15
- package/build-style/video/theme-rtl.css +1 -1
- package/build-style/video/theme.css +1 -1
- package/package.json +34 -34
- package/src/audio/theme.scss +1 -1
- package/src/block/edit.js +5 -17
- package/src/button/edit.native.js +1 -1
- package/src/cover/style.scss +6 -2
- package/src/embed/theme.scss +1 -1
- package/src/gallery/editor.scss +1 -1
- package/src/gallery/index.php +1 -1
- package/src/image/edit.js +11 -40
- package/src/image/editor.scss +2 -2
- package/src/image/image.js +25 -7
- package/src/image/theme.scss +1 -1
- package/src/navigation/index.php +8 -0
- package/src/navigation/view.js +11 -2
- package/src/navigation-link/edit.js +53 -27
- package/src/navigation-submenu/edit.js +30 -10
- package/src/pattern/edit.js +4 -0
- package/src/post-featured-image/block.json +8 -3
- package/src/post-featured-image/edit.js +12 -1
- package/src/post-featured-image/editor.scss +1 -1
- package/src/post-featured-image/overlay-controls.js +88 -0
- package/src/post-featured-image/overlay.js +17 -84
- package/src/pullquote/theme.scss +3 -1
- package/src/query-no-results/index.php +2 -0
- package/src/query-pagination-next/index.php +2 -0
- package/src/query-pagination-numbers/index.php +2 -0
- package/src/quote/edit.js +27 -43
- package/src/quote/test/edit.native.js +4 -6
- package/src/quote/theme.scss +1 -2
- package/src/search/style.scss +11 -0
- package/src/site-logo/editor.scss +2 -2
- package/src/site-tagline/block.json +4 -0
- package/src/site-tagline/edit.js +16 -3
- package/src/site-tagline/index.php +9 -1
- package/src/social-links/editor.scss +1 -9
- package/src/table/theme.scss +4 -2
- package/src/template-part/edit/index.js +87 -79
- package/src/template-part/edit/inner-blocks.js +126 -13
- package/src/template-part/edit/selection-modal.js +1 -22
- package/src/template-part/editor.scss +11 -3
- package/src/template-part/index.php +2 -0
- package/src/template-part/theme.scss +1 -1
- package/src/utils/caption.js +19 -16
- package/src/utils/hooks.js +1 -0
- package/src/video/editor.scss +2 -2
- package/src/video/theme.scss +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_classnames","_interopRequireDefault","require","_element","_compose","_i18n","_blockEditor","_components","_icons","_blocks","_lockUnlock","
|
|
1
|
+
{"version":3,"names":["_classnames","_interopRequireDefault","require","_element","_compose","_i18n","_blockEditor","_components","_icons","_blocks","_lockUnlock","Caption","attributeKey","attributes","setAttributes","isSelected","insertBlocksAfter","placeholder","__","label","showToolbarButton","className","readOnly","tagName","addLabel","removeLabel","icon","captionIcon","props","caption","prevCaption","usePrevious","PrivateRichText","RichText","unlock","blockEditorPrivateApis","isCaptionEmpty","isEmpty","isPrevCaptionEmpty","showCaption","setShowCaption","useState","useEffect","ref","useCallback","node","focus","_react","createElement","Fragment","BlockControls","group","ToolbarButton","onClick","undefined","isPressed","identifier","classnames","__experimentalGetElementClassName","value","onChange","inlineToolbar","__unstableOnSplitAtEnd","createBlock","getDefaultBlockName"],"sources":["@wordpress/block-library/src/utils/caption.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\t__experimentalGetElementClassName,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { ToolbarButton } from '@wordpress/components';\nimport { caption as captionIcon } from '@wordpress/icons';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\n\nexport function Caption( {\n\tattributeKey = 'caption',\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tinsertBlocksAfter,\n\tplaceholder = __( 'Add caption' ),\n\tlabel = __( 'Caption text' ),\n\tshowToolbarButton = true,\n\tclassName,\n\treadOnly,\n\ttagName = 'figcaption',\n\taddLabel = __( 'Add caption' ),\n\tremoveLabel = __( 'Remove caption' ),\n\ticon = captionIcon,\n\t...props\n} ) {\n\tconst caption = attributes[ attributeKey ];\n\tconst prevCaption = usePrevious( caption );\n\tconst { PrivateRichText: RichText } = unlock( blockEditorPrivateApis );\n\tconst isCaptionEmpty = RichText.isEmpty( caption );\n\tconst isPrevCaptionEmpty = RichText.isEmpty( prevCaption );\n\tconst [ showCaption, setShowCaption ] = useState( ! isCaptionEmpty );\n\n\t// We need to show the caption when changes come from\n\t// history navigation(undo/redo).\n\tuseEffect( () => {\n\t\tif ( ! isCaptionEmpty && isPrevCaptionEmpty ) {\n\t\t\tsetShowCaption( true );\n\t\t}\n\t}, [ isCaptionEmpty, isPrevCaptionEmpty ] );\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected && isCaptionEmpty ) {\n\t\t\tsetShowCaption( false );\n\t\t}\n\t}, [ isSelected, isCaptionEmpty ] );\n\n\t// Focus the caption when we click to add one.\n\tconst ref = useCallback(\n\t\t( node ) => {\n\t\t\tif ( node && isCaptionEmpty ) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t},\n\t\t[ isCaptionEmpty ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{ showToolbarButton && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetShowCaption( ! showCaption );\n\t\t\t\t\t\t\tif ( showCaption && caption ) {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t[ attributeKey ]: 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\ticon={ icon }\n\t\t\t\t\t\tisPressed={ showCaption }\n\t\t\t\t\t\tlabel={ showCaption ? removeLabel : addLabel }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ showCaption &&\n\t\t\t\t( ! RichText.isEmpty( caption ) || isSelected ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tidentifier={ attributeKey }\n\t\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t__experimentalGetElementClassName( 'caption' )\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { [ attributeKey ]: 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\treadOnly={ readOnly }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
package/build/utils/hooks.js
CHANGED
package/build/utils/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_element","_blob","_blockEditor","_coreData","useCanEditEntity","kind","name","recordId","useSelect","select","coreStore","canUserEditEntityRecord","useUploadMediaFromBlobURL","args","latestArgs","useRef","getSettings","blockEditorStore","useLayoutEffect","current","useEffect","url","isBlobURL","file","getBlobByURL","allowedTypes","onChange","onError","mediaUpload","filesList","onFileChange","media","revokeBlobURL","message"],"sources":["@wordpress/block-library/src/utils/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useLayoutEffect, useEffect, useRef } from '@wordpress/element';\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\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\n/**\n * Handles uploading a media file from a blob URL on mount.\n *\n * @param {Object} args Upload media arguments.\n * @param {string} args.url Blob URL.\n * @param {?Array} args.allowedTypes Array of allowed media types.\n * @param {Function} args.onChange Function called when the media is uploaded.\n * @param {Function} args.onError Function called when an error happens.\n */\nexport function useUploadMediaFromBlobURL( args = {} ) {\n\tconst latestArgs = useRef( args );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tuseLayoutEffect( () => {\n\t\tlatestArgs.current = args;\n\t} );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! latestArgs.current.url ||\n\t\t\t! isBlobURL( latestArgs.current.url )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( latestArgs.current.url );\n\t\tif ( ! file ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { url, allowedTypes, onChange, onError } = latestArgs.current;\n\t\tconst { mediaUpload } = getSettings();\n\n\t\tmediaUpload( {\n\t\t\tfilesList: [ file ],\n\t\t\tallowedTypes,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tif ( isBlobURL( media?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\trevokeBlobURL( url );\n\t\t\t\tonChange( media );\n\t\t\t},\n\t\t\tonError: ( message ) => {\n\t\t\t\tonError( message );\n\t\t\t},\n\t\t} );\n\t}, [ getSettings ] );\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAPA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,gBAAgBA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAG;EACxD,OAAO,IAAAC,eAAS,EACbC,MAAM,IACPA,MAAM,CAAEC,eAAU,CAAC,CAACC,uBAAuB,CAAEN,IAAI,EAAEC,IAAI,EAAEC,QAAS,CAAC,EACpE,CAAEF,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CACvB,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,yBAAyBA,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAG;EACtD,MAAMC,UAAU,GAAG,IAAAC,eAAM,EAAEF,IAAK,CAAC;EACjC,MAAM;IAAEG;EAAY,CAAC,GAAG,IAAAR,eAAS,EAAES,kBAAiB,CAAC;EAErD,IAAAC,wBAAe,EAAE,MAAM;IACtBJ,UAAU,CAACK,OAAO,GAAGN,IAAI;EAC1B,CAAE,CAAC;EAEH,IAAAO,kBAAS,EAAE,MAAM;IAChB,IACC,CAAEN,UAAU,CAACK,OAAO,CAACE,GAAG,IACxB,CAAE,IAAAC,eAAS,EAAER,UAAU,CAACK,OAAO,CAACE,GAAI,CAAC,EACpC;MACD;IACD;IAEA,MAAME,IAAI,GAAG,IAAAC,kBAAY,EAAEV,UAAU,CAACK,OAAO,CAACE,GAAI,CAAC;IACnD,IAAK,CAAEE,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAEF,GAAG;MAAEI,YAAY;MAAEC,QAAQ;MAAEC;IAAQ,CAAC,GAAGb,UAAU,CAACK,OAAO;IACnE,MAAM;MAAES;IAAY,CAAC,GAAGZ,WAAW,CAAC,CAAC;IAErCY,WAAW,CAAE;MACZC,SAAS,EAAE,CAAEN,IAAI,CAAE;MACnBE,YAAY;MACZK,YAAY,EAAEA,CAAE,CAAEC,KAAK,CAAE,KAAM;QAC9B,IAAK,IAAAT,eAAS,EAAES,KAAK,EAAEV,GAAI,CAAC,EAAG;UAC9B;QACD;QAEA,IAAAW,mBAAa,EAAEX,GAAI,CAAC;QACpBK,QAAQ,CAAEK,KAAM,CAAC;MAClB,CAAC;MACDJ,OAAO,EAAIM,OAAO,IAAM;
|
|
1
|
+
{"version":3,"names":["_data","require","_element","_blob","_blockEditor","_coreData","useCanEditEntity","kind","name","recordId","useSelect","select","coreStore","canUserEditEntityRecord","useUploadMediaFromBlobURL","args","latestArgs","useRef","getSettings","blockEditorStore","useLayoutEffect","current","useEffect","url","isBlobURL","file","getBlobByURL","allowedTypes","onChange","onError","mediaUpload","filesList","onFileChange","media","revokeBlobURL","message"],"sources":["@wordpress/block-library/src/utils/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useLayoutEffect, useEffect, useRef } from '@wordpress/element';\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\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\n/**\n * Handles uploading a media file from a blob URL on mount.\n *\n * @param {Object} args Upload media arguments.\n * @param {string} args.url Blob URL.\n * @param {?Array} args.allowedTypes Array of allowed media types.\n * @param {Function} args.onChange Function called when the media is uploaded.\n * @param {Function} args.onError Function called when an error happens.\n */\nexport function useUploadMediaFromBlobURL( args = {} ) {\n\tconst latestArgs = useRef( args );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tuseLayoutEffect( () => {\n\t\tlatestArgs.current = args;\n\t} );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! latestArgs.current.url ||\n\t\t\t! isBlobURL( latestArgs.current.url )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( latestArgs.current.url );\n\t\tif ( ! file ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { url, allowedTypes, onChange, onError } = latestArgs.current;\n\t\tconst { mediaUpload } = getSettings();\n\n\t\tmediaUpload( {\n\t\t\tfilesList: [ file ],\n\t\t\tallowedTypes,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tif ( isBlobURL( media?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\trevokeBlobURL( url );\n\t\t\t\tonChange( media );\n\t\t\t},\n\t\t\tonError: ( message ) => {\n\t\t\t\trevokeBlobURL( url );\n\t\t\t\tonError( message );\n\t\t\t},\n\t\t} );\n\t}, [ getSettings ] );\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAPA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,gBAAgBA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAG;EACxD,OAAO,IAAAC,eAAS,EACbC,MAAM,IACPA,MAAM,CAAEC,eAAU,CAAC,CAACC,uBAAuB,CAAEN,IAAI,EAAEC,IAAI,EAAEC,QAAS,CAAC,EACpE,CAAEF,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CACvB,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,yBAAyBA,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAG;EACtD,MAAMC,UAAU,GAAG,IAAAC,eAAM,EAAEF,IAAK,CAAC;EACjC,MAAM;IAAEG;EAAY,CAAC,GAAG,IAAAR,eAAS,EAAES,kBAAiB,CAAC;EAErD,IAAAC,wBAAe,EAAE,MAAM;IACtBJ,UAAU,CAACK,OAAO,GAAGN,IAAI;EAC1B,CAAE,CAAC;EAEH,IAAAO,kBAAS,EAAE,MAAM;IAChB,IACC,CAAEN,UAAU,CAACK,OAAO,CAACE,GAAG,IACxB,CAAE,IAAAC,eAAS,EAAER,UAAU,CAACK,OAAO,CAACE,GAAI,CAAC,EACpC;MACD;IACD;IAEA,MAAME,IAAI,GAAG,IAAAC,kBAAY,EAAEV,UAAU,CAACK,OAAO,CAACE,GAAI,CAAC;IACnD,IAAK,CAAEE,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAEF,GAAG;MAAEI,YAAY;MAAEC,QAAQ;MAAEC;IAAQ,CAAC,GAAGb,UAAU,CAACK,OAAO;IACnE,MAAM;MAAES;IAAY,CAAC,GAAGZ,WAAW,CAAC,CAAC;IAErCY,WAAW,CAAE;MACZC,SAAS,EAAE,CAAEN,IAAI,CAAE;MACnBE,YAAY;MACZK,YAAY,EAAEA,CAAE,CAAEC,KAAK,CAAE,KAAM;QAC9B,IAAK,IAAAT,eAAS,EAAES,KAAK,EAAEV,GAAI,CAAC,EAAG;UAC9B;QACD;QAEA,IAAAW,mBAAa,EAAEX,GAAI,CAAC;QACpBK,QAAQ,CAAEK,KAAM,CAAC;MAClB,CAAC;MACDJ,OAAO,EAAIM,OAAO,IAAM;QACvB,IAAAD,mBAAa,EAAEX,GAAI,CAAC;QACpBM,OAAO,CAAEM,OAAQ,CAAC;MACnB;IACD,CAAE,CAAC;EACJ,CAAC,EAAE,CAAEjB,WAAW,CAAG,CAAC;AACrB"}
|
|
@@ -26,7 +26,7 @@ const {
|
|
|
26
26
|
useLayoutClasses
|
|
27
27
|
} = unlock(blockEditorPrivateApis);
|
|
28
28
|
const {
|
|
29
|
-
|
|
29
|
+
isOverridableBlock
|
|
30
30
|
} = unlock(patternsPrivateApis);
|
|
31
31
|
const fullAlignments = ['full', 'wide', 'left', 'right'];
|
|
32
32
|
function getLegacyIdMap(blocks, content, nameCount = {}) {
|
|
@@ -70,12 +70,9 @@ const useInferredLayout = (blocks, parentLayout) => {
|
|
|
70
70
|
};
|
|
71
71
|
}, [blocks, parentLayout]);
|
|
72
72
|
};
|
|
73
|
-
function hasOverridableAttributes(block) {
|
|
74
|
-
return Object.keys(PARTIAL_SYNCING_SUPPORTED_BLOCKS).includes(block.name) && !!block.attributes.metadata?.bindings && Object.values(block.attributes.metadata.bindings).some(binding => binding.source === 'core/pattern-overrides');
|
|
75
|
-
}
|
|
76
73
|
function hasOverridableBlocks(blocks) {
|
|
77
74
|
return blocks.some(block => {
|
|
78
|
-
if (
|
|
75
|
+
if (isOverridableBlock(block)) return true;
|
|
79
76
|
return hasOverridableBlocks(block.innerBlocks);
|
|
80
77
|
});
|
|
81
78
|
}
|
|
@@ -87,7 +84,7 @@ function applyInitialContentValuesToInnerBlocks(blocks, content = {}, defaultVal
|
|
|
87
84
|
var _legacyIdMap$block$cl;
|
|
88
85
|
const innerBlocks = applyInitialContentValuesToInnerBlocks(block.innerBlocks, content, defaultValues, legacyIdMap);
|
|
89
86
|
const metadataName = (_legacyIdMap$block$cl = legacyIdMap?.[block.clientId]) !== null && _legacyIdMap$block$cl !== void 0 ? _legacyIdMap$block$cl : block.attributes.metadata?.name;
|
|
90
|
-
if (!metadataName || !
|
|
87
|
+
if (!metadataName || !isOverridableBlock(block)) {
|
|
91
88
|
return {
|
|
92
89
|
...block,
|
|
93
90
|
innerBlocks
|
|
@@ -129,7 +126,7 @@ function getContentValuesFromInnerBlocks(blocks, defaultValues, legacyIdMap) {
|
|
|
129
126
|
Object.assign(content, getContentValuesFromInnerBlocks(block.innerBlocks, defaultValues, legacyIdMap));
|
|
130
127
|
}
|
|
131
128
|
const metadataName = (_legacyIdMap$block$cl2 = legacyIdMap?.[block.clientId]) !== null && _legacyIdMap$block$cl2 !== void 0 ? _legacyIdMap$block$cl2 : block.attributes.metadata?.name;
|
|
132
|
-
if (!metadataName || !
|
|
129
|
+
if (!metadataName || !isOverridableBlock(block)) {
|
|
133
130
|
continue;
|
|
134
131
|
}
|
|
135
132
|
const attributes = getOverridableAttributes(block);
|
|
@@ -151,7 +148,7 @@ function getContentValuesFromInnerBlocks(blocks, defaultValues, legacyIdMap) {
|
|
|
151
148
|
}
|
|
152
149
|
function setBlockEditMode(setEditMode, blocks, mode) {
|
|
153
150
|
blocks.forEach(block => {
|
|
154
|
-
const editMode = mode || (
|
|
151
|
+
const editMode = mode || (isOverridableBlock(block) ? 'contentOnly' : 'disabled');
|
|
155
152
|
setEditMode(block.clientId, editMode);
|
|
156
153
|
setBlockEditMode(setEditMode, block.innerBlocks,
|
|
157
154
|
// Disable editing for nested patterns.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","useRegistry","useSelect","useDispatch","useRef","useMemo","useEffect","useEntityRecord","store","coreStore","Placeholder","Spinner","ToolbarButton","ToolbarGroup","__","useInnerBlocksProps","RecursionProvider","useHasRecursion","InnerBlocks","useBlockProps","Warning","privateApis","blockEditorPrivateApis","blockEditorStore","BlockControls","patternsPrivateApis","parse","cloneBlock","blocksStore","RichTextData","name","patternBlockName","unlock","useLayoutClasses","PARTIAL_SYNCING_SUPPORTED_BLOCKS","fullAlignments","getLegacyIdMap","blocks","content","nameCount","idToClientIdMap","block","innerBlocks","length","id","attributes","metadata","clientId","useInferredLayout","parentLayout","initialInferredAlignmentRef","alignment","current","undefined","isConstrained","type","hasFullAlignment","some","includes","align","layout","hasOverridableAttributes","Object","keys","bindings","values","binding","source","hasOverridableBlocks","getOverridableAttributes","entries","filter","map","attributeKey","applyInitialContentValuesToInnerBlocks","defaultValues","legacyIdMap","_legacyIdMap$block$cl","metadataName","newAttributes","_defaultValues$metada","contentValues","isAttributeEqual","attribute1","attribute2","toString","getContentValuesFromInnerBlocks","_legacyIdMap$block$cl2","assign","_content$metadataName","setBlockEditMode","setEditMode","mode","forEach","editMode","ReusableBlockEdit","ref","__unstableParentLayout","patternClientId","setAttributes","registry","hasAlreadyRendered","record","editedRecord","hasResolved","isMissing","initialContent","defaultContent","replaceInnerBlocks","__unstableMarkNextChangeAsNotPersistent","setBlockEditingMode","syncDerivedUpdates","userCanEdit","getBlockEditingMode","onNavigateToEntityRecord","editingMode","hasPatternOverridesSource","select","canUser","getBlocks","getSettings","_getBlockEditingMode","getBlockBindingsSource","canEdit","canOverrideBlocks","initialBlocks","_editedRecord$blocks$","originalEditingMode","batch","layoutClasses","blockProps","className","innerBlocksProps","templateLock","renderAppender","ButtonBlockAppender","prevBlocks","subscribe","handleEditOriginal","postId","postType","resetContent","children","createElement","uniqueId","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/block-library/src/block/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, useMemo, useEffect } from '@wordpress/element';\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInnerBlocks,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { parse, cloneBlock, store as blocksStore } from '@wordpress/blocks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { name as patternBlockName } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\nconst { PARTIAL_SYNCING_SUPPORTED_BLOCKS } = unlock( patternsPrivateApis );\n\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nfunction getLegacyIdMap( blocks, content, nameCount = {} ) {\n\tlet idToClientIdMap = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block?.innerBlocks?.length ) {\n\t\t\tidToClientIdMap = {\n\t\t\t\t...idToClientIdMap,\n\t\t\t\t...getLegacyIdMap( block.innerBlocks, content, nameCount ),\n\t\t\t};\n\t\t}\n\n\t\tconst id = block.attributes.metadata?.id;\n\t\tconst clientId = block.clientId;\n\t\tif ( id && content?.[ id ] ) {\n\t\t\tidToClientIdMap[ clientId ] = id;\n\t\t}\n\t}\n\treturn idToClientIdMap;\n}\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nfunction hasOverridableAttributes( block ) {\n\treturn (\n\t\tObject.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(\n\t\t\tblock.name\n\t\t) &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n\nfunction hasOverridableBlocks( blocks ) {\n\treturn blocks.some( ( block ) => {\n\t\tif ( hasOverridableAttributes( block ) ) return true;\n\t\treturn hasOverridableBlocks( block.innerBlocks );\n\t} );\n}\n\nfunction getOverridableAttributes( block ) {\n\treturn Object.entries( block.attributes.metadata.bindings )\n\t\t.filter(\n\t\t\t( [ , binding ] ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t\t.map( ( [ attributeKey ] ) => attributeKey );\n}\n\nfunction applyInitialContentValuesToInnerBlocks(\n\tblocks,\n\tcontent = {},\n\tdefaultValues,\n\tlegacyIdMap\n) {\n\treturn blocks.map( ( block ) => {\n\t\tconst innerBlocks = applyInitialContentValuesToInnerBlocks(\n\t\t\tblock.innerBlocks,\n\t\t\tcontent,\n\t\t\tdefaultValues,\n\t\t\tlegacyIdMap\n\t\t);\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\n\t\tif ( ! metadataName || ! hasOverridableAttributes( block ) ) {\n\t\t\treturn { ...block, innerBlocks };\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\t\tconst newAttributes = { ...block.attributes };\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tdefaultValues[ metadataName ] ??= {};\n\t\t\tdefaultValues[ metadataName ][ attributeKey ] =\n\t\t\t\tblock.attributes[ attributeKey ];\n\n\t\t\tconst contentValues = content[ metadataName ];\n\t\t\tif ( contentValues?.[ attributeKey ] !== undefined ) {\n\t\t\t\tnewAttributes[ attributeKey ] = contentValues[ attributeKey ];\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: newAttributes,\n\t\t\tinnerBlocks,\n\t\t};\n\t} );\n}\n\nfunction isAttributeEqual( attribute1, attribute2 ) {\n\tif (\n\t\tattribute1 instanceof RichTextData &&\n\t\tattribute2 instanceof RichTextData\n\t) {\n\t\treturn attribute1.toString() === attribute2.toString();\n\t}\n\treturn attribute1 === attribute2;\n}\n\nfunction getContentValuesFromInnerBlocks( blocks, defaultValues, legacyIdMap ) {\n\t/** @type {Record<string, { values: Record<string, unknown>}>} */\n\tconst content = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block.name === patternBlockName ) continue;\n\t\tif ( block.innerBlocks.length ) {\n\t\t\tObject.assign(\n\t\t\t\tcontent,\n\t\t\t\tgetContentValuesFromInnerBlocks(\n\t\t\t\t\tblock.innerBlocks,\n\t\t\t\t\tdefaultValues,\n\t\t\t\t\tlegacyIdMap\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\t\tif ( ! metadataName || ! hasOverridableAttributes( block ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tif (\n\t\t\t\t! isAttributeEqual(\n\t\t\t\t\tblock.attributes[ attributeKey ],\n\t\t\t\t\tdefaultValues?.[ metadataName ]?.[ attributeKey ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontent[ metadataName ] ??= {};\n\t\t\t\t// TODO: We need a way to represent `undefined` in the serialized overrides.\n\t\t\t\t// Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871\n\t\t\t\tcontent[ metadataName ][ attributeKey ] =\n\t\t\t\t\tblock.attributes[ attributeKey ] === undefined\n\t\t\t\t\t\t? // TODO: We use an empty string to represent undefined for now until\n\t\t\t\t\t\t // we support a richer format for overrides and the block binding API.\n\t\t\t\t\t\t // Currently only the `linkTarget` attribute of `core/button` is affected.\n\t\t\t\t\t\t ''\n\t\t\t\t\t\t: block.attributes[ attributeKey ];\n\t\t\t}\n\t\t}\n\t}\n\treturn Object.keys( content ).length > 0 ? content : undefined;\n}\n\nfunction setBlockEditMode( setEditMode, blocks, mode ) {\n\tblocks.forEach( ( block ) => {\n\t\tconst editMode =\n\t\t\tmode ||\n\t\t\t( hasOverridableAttributes( block ) ? 'contentOnly' : 'disabled' );\n\t\tsetEditMode( block.clientId, editMode );\n\n\t\tsetBlockEditMode(\n\t\t\tsetEditMode,\n\t\t\tblock.innerBlocks,\n\t\t\t// Disable editing for nested patterns.\n\t\t\tblock.name === patternBlockName ? 'disabled' : mode\n\t\t);\n\t} );\n}\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref, content },\n\t__unstableParentLayout: parentLayout,\n\tclientId: patternClientId,\n\tsetAttributes,\n} ) {\n\tconst registry = useRegistry();\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, editedRecord, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\t// The initial value of the `content` attribute.\n\tconst initialContent = useRef( content );\n\n\t// The default content values from the original pattern for overridable attributes.\n\t// Set by the `applyInitialContentValuesToInnerBlocks` function.\n\tconst defaultContent = useRef( {} );\n\n\tconst {\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetBlockEditingMode,\n\t} = useDispatch( blockEditorStore );\n\tconst { syncDerivedUpdates } = unlock( useDispatch( blockEditorStore ) );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tuserCanEdit,\n\t\tgetBlockEditingMode,\n\t\tonNavigateToEntityRecord,\n\t\teditingMode,\n\t\thasPatternOverridesSource,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tconst canEdit = canUser( 'update', 'blocks', ref );\n\n\t\t\t// For editing link to the site editor if the theme and user permissions support it.\n\t\t\treturn {\n\t\t\t\tinnerBlocks: blocks,\n\t\t\t\tuserCanEdit: canEdit,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\teditingMode: _getBlockEditingMode( patternClientId ),\n\t\t\t\thasPatternOverridesSource: !! getBlockBindingsSource(\n\t\t\t\t\t'core/pattern-overrides'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ patternClientId, ref ]\n\t);\n\n\t// Sync the editing mode of the pattern block with the inner blocks.\n\tuseEffect( () => {\n\t\tsetBlockEditMode(\n\t\t\tsetBlockEditingMode,\n\t\t\tinnerBlocks,\n\t\t\t// Disable editing if the pattern itself is disabled.\n\t\t\teditingMode === 'disabled' || ! hasPatternOverridesSource\n\t\t\t\t? 'disabled'\n\t\t\t\t: undefined\n\t\t);\n\t}, [\n\t\teditingMode,\n\t\tinnerBlocks,\n\t\tsetBlockEditingMode,\n\t\thasPatternOverridesSource,\n\t] );\n\n\tconst canOverrideBlocks = useMemo(\n\t\t() => hasPatternOverridesSource && hasOverridableBlocks( innerBlocks ),\n\t\t[ hasPatternOverridesSource, innerBlocks ]\n\t);\n\n\tconst initialBlocks = useMemo(\n\t\t() =>\n\t\t\t// Clone the blocks to generate new client IDs.\n\t\t\teditedRecord.blocks?.map( ( block ) => cloneBlock( block ) ) ??\n\t\t\t( editedRecord.content && typeof editedRecord.content !== 'function'\n\t\t\t\t? parse( editedRecord.content )\n\t\t\t\t: [] ),\n\t\t[ editedRecord.blocks, editedRecord.content ]\n\t);\n\n\tconst legacyIdMap = useRef( {} );\n\n\t// Apply the initial overrides from the pattern block to the inner blocks.\n\tuseEffect( () => {\n\t\t// Build a map of clientIds to the old nano id system to provide back compat.\n\t\tlegacyIdMap.current = getLegacyIdMap(\n\t\t\tinitialBlocks,\n\t\t\tinitialContent.current\n\t\t);\n\t\tdefaultContent.current = {};\n\t\tconst originalEditingMode = getBlockEditingMode( patternClientId );\n\t\t// Replace the contents of the blocks with the overrides.\n\t\tregistry.batch( () => {\n\t\t\tsetBlockEditingMode( patternClientId, 'default' );\n\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\tconst blocks = hasPatternOverridesSource\n\t\t\t\t\t? applyInitialContentValuesToInnerBlocks(\n\t\t\t\t\t\t\tinitialBlocks,\n\t\t\t\t\t\t\tinitialContent.current,\n\t\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\t\tlegacyIdMap.current\n\t\t\t\t\t )\n\t\t\t\t\t: initialBlocks;\n\n\t\t\t\treplaceInnerBlocks( patternClientId, blocks );\n\t\t\t} );\n\t\t\tsetBlockEditingMode( patternClientId, originalEditingMode );\n\t\t} );\n\t}, [\n\t\thasPatternOverridesSource,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tpatternClientId,\n\t\tinitialBlocks,\n\t\treplaceInnerBlocks,\n\t\tregistry,\n\t\tgetBlockEditingMode,\n\t\tsetBlockEditingMode,\n\t\tsyncDerivedUpdates,\n\t] );\n\n\tconst { alignment, layout } = useInferredLayout(\n\t\tinnerBlocks,\n\t\tparentLayout\n\t);\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: 'all',\n\t\tlayout,\n\t\trenderAppender: innerBlocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\t// Sync the `content` attribute from the updated blocks to the pattern block.\n\t// `syncDerivedUpdates` is used here to avoid creating an additional undo level.\n\tuseEffect( () => {\n\t\tif ( ! hasPatternOverridesSource ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { getBlocks } = registry.select( blockEditorStore );\n\t\tlet prevBlocks = getBlocks( patternClientId );\n\t\treturn registry.subscribe( () => {\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tif ( blocks !== prevBlocks ) {\n\t\t\t\tprevBlocks = blocks;\n\t\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: getContentValuesFromInnerBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\t\tlegacyIdMap.current\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}, blockEditorStore );\n\t}, [\n\t\thasPatternOverridesSource,\n\t\tsyncDerivedUpdates,\n\t\tpatternClientId,\n\t\tregistry,\n\t\tsetAttributes,\n\t] );\n\n\tconst handleEditOriginal = () => {\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: ref,\n\t\t\tpostType: 'wp_block',\n\t\t} );\n\t};\n\n\tconst resetContent = () => {\n\t\tif ( content ) {\n\t\t\treplaceInnerBlocks( patternClientId, initialBlocks );\n\t\t}\n\t};\n\n\tlet children = null;\n\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t{ userCanEdit && onNavigateToEntityRecord && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton onClick={ handleEditOriginal }>\n\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ canOverrideBlocks && (\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={ resetContent }\n\t\t\t\t\t\t\tdisabled={ ! content }\n\t\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,WAAW,EAAEC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACrE,SAASC,MAAM,EAAEC,OAAO,EAAEC,SAAS,QAAQ,oBAAoB;AAC/D,SAASC,eAAe,EAAEC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AAC1E,SACCC,WAAW,EACXC,OAAO,EACPC,aAAa,EACbC,YAAY,QACN,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SACCC,mBAAmB,EACnBC,iBAAiB,EACjBC,eAAe,EACfC,WAAW,EACXC,aAAa,EACbC,OAAO,EACPC,WAAW,IAAIC,sBAAsB,EACrCd,KAAK,IAAIe,gBAAgB,EACzBC,aAAa,QACP,yBAAyB;AAChC,SAASH,WAAW,IAAII,mBAAmB,QAAQ,qBAAqB;AACxE,SAASC,KAAK,EAAEC,UAAU,EAAEnB,KAAK,IAAIoB,WAAW,QAAQ,mBAAmB;AAC3E,SAASC,YAAY,QAAQ,sBAAsB;;AAEnD;AACA;AACA;AACA,SAASC,IAAI,IAAIC,gBAAgB,QAAQ,SAAS;AAClD,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,MAAM;EAAEC;AAAiB,CAAC,GAAGD,MAAM,CAAEV,sBAAuB,CAAC;AAC7D,MAAM;EAAEY;AAAiC,CAAC,GAAGF,MAAM,CAAEP,mBAAoB,CAAC;AAE1E,MAAMU,cAAc,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAE;AAE1D,SAASC,cAAcA,CAAEC,MAAM,EAAEC,OAAO,EAAEC,SAAS,GAAG,CAAC,CAAC,EAAG;EAC1D,IAAIC,eAAe,GAAG,CAAC,CAAC;EACxB,KAAM,MAAMC,KAAK,IAAIJ,MAAM,EAAG;IAC7B,IAAKI,KAAK,EAAEC,WAAW,EAAEC,MAAM,EAAG;MACjCH,eAAe,GAAG;QACjB,GAAGA,eAAe;QAClB,GAAGJ,cAAc,CAAEK,KAAK,CAACC,WAAW,EAAEJ,OAAO,EAAEC,SAAU;MAC1D,CAAC;IACF;IAEA,MAAMK,EAAE,GAAGH,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEF,EAAE;IACxC,MAAMG,QAAQ,GAAGN,KAAK,CAACM,QAAQ;IAC/B,IAAKH,EAAE,IAAIN,OAAO,GAAIM,EAAE,CAAE,EAAG;MAC5BJ,eAAe,CAAEO,QAAQ,CAAE,GAAGH,EAAE;IACjC;EACD;EACA,OAAOJ,eAAe;AACvB;AAEA,MAAMQ,iBAAiB,GAAGA,CAAEX,MAAM,EAAEY,YAAY,KAAM;EACrD,MAAMC,2BAA2B,GAAG9C,MAAM,CAAC,CAAC;EAE5C,OAAOC,OAAO,CAAE,MAAM;IACrB;IACA,IAAK,CAAEgC,MAAM,EAAEM,MAAM,EAAG;MACvB,OAAO,CAAC,CAAC;IACV;IAEA,IAAIQ,SAAS,GAAGD,2BAA2B,CAACE,OAAO;;IAEnD;IACA;IACA,IAAKD,SAAS,KAAKE,SAAS,EAAG;MAC9B,MAAMC,aAAa,GAAGL,YAAY,EAAEM,IAAI,KAAK,aAAa;MAC1D,MAAMC,gBAAgB,GAAGnB,MAAM,CAACoB,IAAI,CAAIhB,KAAK,IAC5CN,cAAc,CAACuB,QAAQ,CAAEjB,KAAK,CAACI,UAAU,CAACc,KAAM,CACjD,CAAC;MAEDR,SAAS,GAAGG,aAAa,IAAIE,gBAAgB,GAAG,MAAM,GAAG,IAAI;MAC7DN,2BAA2B,CAACE,OAAO,GAAGD,SAAS;IAChD;IAEA,MAAMS,MAAM,GAAGT,SAAS,GAAGF,YAAY,GAAGI,SAAS;IAEnD,OAAO;MAAEF,SAAS;MAAES;IAAO,CAAC;EAC7B,CAAC,EAAE,CAAEvB,MAAM,EAAEY,YAAY,CAAG,CAAC;AAC9B,CAAC;AAED,SAASY,wBAAwBA,CAAEpB,KAAK,EAAG;EAC1C,OACCqB,MAAM,CAACC,IAAI,CAAE7B,gCAAiC,CAAC,CAACwB,QAAQ,CACvDjB,KAAK,CAACX,IACP,CAAC,IACD,CAAC,CAAEW,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEkB,QAAQ,IACtCF,MAAM,CAACG,MAAM,CAAExB,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACkB,QAAS,CAAC,CAACP,IAAI,CACrDS,OAAO,IAAMA,OAAO,CAACC,MAAM,KAAK,wBACnC,CAAC;AAEH;AAEA,SAASC,oBAAoBA,CAAE/B,MAAM,EAAG;EACvC,OAAOA,MAAM,CAACoB,IAAI,CAAIhB,KAAK,IAAM;IAChC,IAAKoB,wBAAwB,CAAEpB,KAAM,CAAC,EAAG,OAAO,IAAI;IACpD,OAAO2B,oBAAoB,CAAE3B,KAAK,CAACC,WAAY,CAAC;EACjD,CAAE,CAAC;AACJ;AAEA,SAAS2B,wBAAwBA,CAAE5B,KAAK,EAAG;EAC1C,OAAOqB,MAAM,CAACQ,OAAO,CAAE7B,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACkB,QAAS,CAAC,CACzDO,MAAM,CACN,CAAE,GAAIL,OAAO,CAAE,KAAMA,OAAO,CAACC,MAAM,KAAK,wBACzC,CAAC,CACAK,GAAG,CAAE,CAAE,CAAEC,YAAY,CAAE,KAAMA,YAAa,CAAC;AAC9C;AAEA,SAASC,sCAAsCA,CAC9CrC,MAAM,EACNC,OAAO,GAAG,CAAC,CAAC,EACZqC,aAAa,EACbC,WAAW,EACV;EACD,OAAOvC,MAAM,CAACmC,GAAG,CAAI/B,KAAK,IAAM;IAAA,IAAAoC,qBAAA;IAC/B,MAAMnC,WAAW,GAAGgC,sCAAsC,CACzDjC,KAAK,CAACC,WAAW,EACjBJ,OAAO,EACPqC,aAAa,EACbC,WACD,CAAC;IACD,MAAME,YAAY,IAAAD,qBAAA,GACjBD,WAAW,GAAInC,KAAK,CAACM,QAAQ,CAAE,cAAA8B,qBAAA,cAAAA,qBAAA,GAAIpC,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEhB,IAAI;IAEnE,IAAK,CAAEgD,YAAY,IAAI,CAAEjB,wBAAwB,CAAEpB,KAAM,CAAC,EAAG;MAC5D,OAAO;QAAE,GAAGA,KAAK;QAAEC;MAAY,CAAC;IACjC;IAEA,MAAMG,UAAU,GAAGwB,wBAAwB,CAAE5B,KAAM,CAAC;IACpD,MAAMsC,aAAa,GAAG;MAAE,GAAGtC,KAAK,CAACI;IAAW,CAAC;IAC7C,KAAM,MAAM4B,YAAY,IAAI5B,UAAU,EAAG;MAAA,IAAAmC,qBAAA;MACxC,CAAAA,qBAAA,GAAAL,aAAa,CAAEG,YAAY,CAAE,cAAAE,qBAAA,cAAAA,qBAAA,GAA7BL,aAAa,CAAEG,YAAY,CAAE,GAAK,CAAC,CAAC;MACpCH,aAAa,CAAEG,YAAY,CAAE,CAAEL,YAAY,CAAE,GAC5ChC,KAAK,CAACI,UAAU,CAAE4B,YAAY,CAAE;MAEjC,MAAMQ,aAAa,GAAG3C,OAAO,CAAEwC,YAAY,CAAE;MAC7C,IAAKG,aAAa,GAAIR,YAAY,CAAE,KAAKpB,SAAS,EAAG;QACpD0B,aAAa,CAAEN,YAAY,CAAE,GAAGQ,aAAa,CAAER,YAAY,CAAE;MAC9D;IACD;IACA,OAAO;MACN,GAAGhC,KAAK;MACRI,UAAU,EAAEkC,aAAa;MACzBrC;IACD,CAAC;EACF,CAAE,CAAC;AACJ;AAEA,SAASwC,gBAAgBA,CAAEC,UAAU,EAAEC,UAAU,EAAG;EACnD,IACCD,UAAU,YAAYtD,YAAY,IAClCuD,UAAU,YAAYvD,YAAY,EACjC;IACD,OAAOsD,UAAU,CAACE,QAAQ,CAAC,CAAC,KAAKD,UAAU,CAACC,QAAQ,CAAC,CAAC;EACvD;EACA,OAAOF,UAAU,KAAKC,UAAU;AACjC;AAEA,SAASE,+BAA+BA,CAAEjD,MAAM,EAAEsC,aAAa,EAAEC,WAAW,EAAG;EAC9E;EACA,MAAMtC,OAAO,GAAG,CAAC,CAAC;EAClB,KAAM,MAAMG,KAAK,IAAIJ,MAAM,EAAG;IAAA,IAAAkD,sBAAA;IAC7B,IAAK9C,KAAK,CAACX,IAAI,KAAKC,gBAAgB,EAAG;IACvC,IAAKU,KAAK,CAACC,WAAW,CAACC,MAAM,EAAG;MAC/BmB,MAAM,CAAC0B,MAAM,CACZlD,OAAO,EACPgD,+BAA+B,CAC9B7C,KAAK,CAACC,WAAW,EACjBiC,aAAa,EACbC,WACD,CACD,CAAC;IACF;IACA,MAAME,YAAY,IAAAS,sBAAA,GACjBX,WAAW,GAAInC,KAAK,CAACM,QAAQ,CAAE,cAAAwC,sBAAA,cAAAA,sBAAA,GAAI9C,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEhB,IAAI;IACnE,IAAK,CAAEgD,YAAY,IAAI,CAAEjB,wBAAwB,CAAEpB,KAAM,CAAC,EAAG;MAC5D;IACD;IAEA,MAAMI,UAAU,GAAGwB,wBAAwB,CAAE5B,KAAM,CAAC;IAEpD,KAAM,MAAMgC,YAAY,IAAI5B,UAAU,EAAG;MACxC,IACC,CAAEqC,gBAAgB,CACjBzC,KAAK,CAACI,UAAU,CAAE4B,YAAY,CAAE,EAChCE,aAAa,GAAIG,YAAY,CAAE,GAAIL,YAAY,CAChD,CAAC,EACA;QAAA,IAAAgB,qBAAA;QACD,CAAAA,qBAAA,GAAAnD,OAAO,CAAEwC,YAAY,CAAE,cAAAW,qBAAA,cAAAA,qBAAA,GAAvBnD,OAAO,CAAEwC,YAAY,CAAE,GAAK,CAAC,CAAC;QAC9B;QACA;QACAxC,OAAO,CAAEwC,YAAY,CAAE,CAAEL,YAAY,CAAE,GACtChC,KAAK,CAACI,UAAU,CAAE4B,YAAY,CAAE,KAAKpB,SAAS;QAC3C;QACA;QACA;QACA,EAAE,GACFZ,KAAK,CAACI,UAAU,CAAE4B,YAAY,CAAE;MACrC;IACD;EACD;EACA,OAAOX,MAAM,CAACC,IAAI,CAAEzB,OAAQ,CAAC,CAACK,MAAM,GAAG,CAAC,GAAGL,OAAO,GAAGe,SAAS;AAC/D;AAEA,SAASqC,gBAAgBA,CAAEC,WAAW,EAAEtD,MAAM,EAAEuD,IAAI,EAAG;EACtDvD,MAAM,CAACwD,OAAO,CAAIpD,KAAK,IAAM;IAC5B,MAAMqD,QAAQ,GACbF,IAAI,KACF/B,wBAAwB,CAAEpB,KAAM,CAAC,GAAG,aAAa,GAAG,UAAU,CAAE;IACnEkD,WAAW,CAAElD,KAAK,CAACM,QAAQ,EAAE+C,QAAS,CAAC;IAEvCJ,gBAAgB,CACfC,WAAW,EACXlD,KAAK,CAACC,WAAW;IACjB;IACAD,KAAK,CAACX,IAAI,KAAKC,gBAAgB,GAAG,UAAU,GAAG6D,IAChD,CAAC;EACF,CAAE,CAAC;AACJ;AAEA,eAAe,SAASG,iBAAiBA,CAAE;EAC1CjE,IAAI;EACJe,UAAU,EAAE;IAAEmD,GAAG;IAAE1D;EAAQ,CAAC;EAC5B2D,sBAAsB,EAAEhD,YAAY;EACpCF,QAAQ,EAAEmD,eAAe;EACzBC;AACD,CAAC,EAAG;EACH,MAAMC,QAAQ,GAAGnG,WAAW,CAAC,CAAC;EAC9B,MAAMoG,kBAAkB,GAAGpF,eAAe,CAAE+E,GAAI,CAAC;EACjD,MAAM;IAAEM,MAAM;IAAEC,YAAY;IAAEC;EAAY,CAAC,GAAGjG,eAAe,CAC5D,UAAU,EACV,UAAU,EACVyF,GACD,CAAC;EACD,MAAMS,SAAS,GAAGD,WAAW,IAAI,CAAEF,MAAM;;EAEzC;EACA,MAAMI,cAAc,GAAGtG,MAAM,CAAEkC,OAAQ,CAAC;;EAExC;EACA;EACA,MAAMqE,cAAc,GAAGvG,MAAM,CAAE,CAAC,CAAE,CAAC;EAEnC,MAAM;IACLwG,kBAAkB;IAClBC,uCAAuC;IACvCC;EACD,CAAC,GAAG3G,WAAW,CAAEoB,gBAAiB,CAAC;EACnC,MAAM;IAAEwF;EAAmB,CAAC,GAAG/E,MAAM,CAAE7B,WAAW,CAAEoB,gBAAiB,CAAE,CAAC;EAExE,MAAM;IACLmB,WAAW;IACXsE,WAAW;IACXC,mBAAmB;IACnBC,wBAAwB;IACxBC,WAAW;IACXC;EACD,CAAC,GAAGlH,SAAS,CACVmH,MAAM,IAAM;IACb,MAAM;MAAEC;IAAQ,CAAC,GAAGD,MAAM,CAAE5G,SAAU,CAAC;IACvC,MAAM;MACL8G,SAAS;MACTC,WAAW;MACXP,mBAAmB,EAAEQ;IACtB,CAAC,GAAGJ,MAAM,CAAE9F,gBAAiB,CAAC;IAC9B,MAAM;MAAEmG;IAAuB,CAAC,GAAG1F,MAAM,CAAEqF,MAAM,CAAEzF,WAAY,CAAE,CAAC;IAClE,MAAMS,MAAM,GAAGkF,SAAS,CAAErB,eAAgB,CAAC;IAC3C,MAAMyB,OAAO,GAAGL,OAAO,CAAE,QAAQ,EAAE,QAAQ,EAAEtB,GAAI,CAAC;;IAElD;IACA,OAAO;MACNtD,WAAW,EAAEL,MAAM;MACnB2E,WAAW,EAAEW,OAAO;MACpBV,mBAAmB,EAAEQ,oBAAoB;MACzCP,wBAAwB,EACvBM,WAAW,CAAC,CAAC,CAACN,wBAAwB;MACvCC,WAAW,EAAEM,oBAAoB,CAAEvB,eAAgB,CAAC;MACpDkB,yBAAyB,EAAE,CAAC,CAAEM,sBAAsB,CACnD,wBACD;IACD,CAAC;EACF,CAAC,EACD,CAAExB,eAAe,EAAEF,GAAG,CACvB,CAAC;;EAED;EACA1F,SAAS,CAAE,MAAM;IAChBoF,gBAAgB,CACfoB,mBAAmB,EACnBpE,WAAW;IACX;IACAyE,WAAW,KAAK,UAAU,IAAI,CAAEC,yBAAyB,GACtD,UAAU,GACV/D,SACJ,CAAC;EACF,CAAC,EAAE,CACF8D,WAAW,EACXzE,WAAW,EACXoE,mBAAmB,EACnBM,yBAAyB,CACxB,CAAC;EAEH,MAAMQ,iBAAiB,GAAGvH,OAAO,CAChC,MAAM+G,yBAAyB,IAAIhD,oBAAoB,CAAE1B,WAAY,CAAC,EACtE,CAAE0E,yBAAyB,EAAE1E,WAAW,CACzC,CAAC;EAED,MAAMmF,aAAa,GAAGxH,OAAO,CAC5B;IAAA,IAAAyH,qBAAA;IAAA,OACC;MAAA,CAAAA,qBAAA,GACAvB,YAAY,CAAClE,MAAM,EAAEmC,GAAG,CAAI/B,KAAK,IAAMd,UAAU,CAAEc,KAAM,CAAE,CAAC,cAAAqF,qBAAA,cAAAA,qBAAA,GAC1DvB,YAAY,CAACjE,OAAO,IAAI,OAAOiE,YAAY,CAACjE,OAAO,KAAK,UAAU,GACjEZ,KAAK,CAAE6E,YAAY,CAACjE,OAAQ,CAAC,GAC7B;IAAE;EAAA,CAAE,EACR,CAAEiE,YAAY,CAAClE,MAAM,EAAEkE,YAAY,CAACjE,OAAO,CAC5C,CAAC;EAED,MAAMsC,WAAW,GAAGxE,MAAM,CAAE,CAAC,CAAE,CAAC;;EAEhC;EACAE,SAAS,CAAE,MAAM;IAChB;IACAsE,WAAW,CAACxB,OAAO,GAAGhB,cAAc,CACnCyF,aAAa,EACbnB,cAAc,CAACtD,OAChB,CAAC;IACDuD,cAAc,CAACvD,OAAO,GAAG,CAAC,CAAC;IAC3B,MAAM2E,mBAAmB,GAAGd,mBAAmB,CAAEf,eAAgB,CAAC;IAClE;IACAE,QAAQ,CAAC4B,KAAK,CAAE,MAAM;MACrBlB,mBAAmB,CAAEZ,eAAe,EAAE,SAAU,CAAC;MACjDa,kBAAkB,CAAE,MAAM;QACzB,MAAM1E,MAAM,GAAG+E,yBAAyB,GACrC1C,sCAAsC,CACtCmD,aAAa,EACbnB,cAAc,CAACtD,OAAO,EACtBuD,cAAc,CAACvD,OAAO,EACtBwB,WAAW,CAACxB,OACZ,CAAC,GACDyE,aAAa;QAEhBjB,kBAAkB,CAAEV,eAAe,EAAE7D,MAAO,CAAC;MAC9C,CAAE,CAAC;MACHyE,mBAAmB,CAAEZ,eAAe,EAAE6B,mBAAoB,CAAC;IAC5D,CAAE,CAAC;EACJ,CAAC,EAAE,CACFX,yBAAyB,EACzBP,uCAAuC,EACvCX,eAAe,EACf2B,aAAa,EACbjB,kBAAkB,EAClBR,QAAQ,EACRa,mBAAmB,EACnBH,mBAAmB,EACnBC,kBAAkB,CACjB,CAAC;EAEH,MAAM;IAAE5D,SAAS;IAAES;EAAO,CAAC,GAAGZ,iBAAiB,CAC9CN,WAAW,EACXO,YACD,CAAC;EACD,MAAMgF,aAAa,GAAGhG,gBAAgB,CAAE;IAAE2B;EAAO,CAAC,EAAE9B,IAAK,CAAC;EAE1D,MAAMoG,UAAU,GAAG/G,aAAa,CAAE;IACjCgH,SAAS,EAAEnI,UAAU,CACpB,+CAA+C,EAC/C4D,MAAM,IAAIqE,aAAa,EACvB;MAAE,CAAG,QAAQ9E,SAAW,EAAC,GAAIA;IAAU,CACxC;EACD,CAAE,CAAC;EAEH,MAAMiF,gBAAgB,GAAGrH,mBAAmB,CAAEmH,UAAU,EAAE;IACzDG,YAAY,EAAE,KAAK;IACnBzE,MAAM;IACN0E,cAAc,EAAE5F,WAAW,EAAEC,MAAM,GAChCU,SAAS,GACTnC,WAAW,CAACqH;EAChB,CAAE,CAAC;;EAEH;EACA;EACAjI,SAAS,CAAE,MAAM;IAChB,IAAK,CAAE8G,yBAAyB,EAAG;MAClC;IACD;IACA,MAAM;MAAEG;IAAU,CAAC,GAAGnB,QAAQ,CAACiB,MAAM,CAAE9F,gBAAiB,CAAC;IACzD,IAAIiH,UAAU,GAAGjB,SAAS,CAAErB,eAAgB,CAAC;IAC7C,OAAOE,QAAQ,CAACqC,SAAS,CAAE,MAAM;MAChC,MAAMpG,MAAM,GAAGkF,SAAS,CAAErB,eAAgB,CAAC;MAC3C,IAAK7D,MAAM,KAAKmG,UAAU,EAAG;QAC5BA,UAAU,GAAGnG,MAAM;QACnB0E,kBAAkB,CAAE,MAAM;UACzBZ,aAAa,CAAE;YACd7D,OAAO,EAAEgD,+BAA+B,CACvCjD,MAAM,EACNsE,cAAc,CAACvD,OAAO,EACtBwB,WAAW,CAACxB,OACb;UACD,CAAE,CAAC;QACJ,CAAE,CAAC;MACJ;IACD,CAAC,EAAE7B,gBAAiB,CAAC;EACtB,CAAC,EAAE,CACF6F,yBAAyB,EACzBL,kBAAkB,EAClBb,eAAe,EACfE,QAAQ,EACRD,aAAa,CACZ,CAAC;EAEH,MAAMuC,kBAAkB,GAAGA,CAAA,KAAM;IAChCxB,wBAAwB,CAAE;MACzByB,MAAM,EAAE3C,GAAG;MACX4C,QAAQ,EAAE;IACX,CAAE,CAAC;EACJ,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IAC1B,IAAKvG,OAAO,EAAG;MACdsE,kBAAkB,CAAEV,eAAe,EAAE2B,aAAc,CAAC;IACrD;EACD,CAAC;EAED,IAAIiB,QAAQ,GAAG,IAAI;EAEnB,IAAKzC,kBAAkB,EAAG;IACzByC,QAAQ,GACPC,aAAA,CAAC3H,OAAO,QACLN,EAAE,CAAE,yCAA0C,CACxC,CACT;EACF;EAEA,IAAK2F,SAAS,EAAG;IAChBqC,QAAQ,GACPC,aAAA,CAAC3H,OAAO,QACLN,EAAE,CAAE,2CAA4C,CAC1C,CACT;EACF;EAEA,IAAK,CAAE0F,WAAW,EAAG;IACpBsC,QAAQ,GACPC,aAAA,CAACrI,WAAW,QACXqI,aAAA,CAACpI,OAAO,MAAE,CACE,CACb;EACF;EAEA,OACCoI,aAAA,CAAC/H,iBAAiB;IAACgI,QAAQ,EAAGhD;EAAK,GAChCgB,WAAW,IAAIE,wBAAwB,IACxC6B,aAAA,CAACvH,aAAa,QACbuH,aAAA,CAAClI,YAAY,QACZkI,aAAA,CAACnI,aAAa;IAACqI,OAAO,EAAGP;EAAoB,GAC1C5H,EAAE,CAAE,eAAgB,CACR,CACF,CACA,CACf,EAEC8G,iBAAiB,IAClBmB,aAAA,CAACvH,aAAa,QACbuH,aAAA,CAAClI,YAAY,QACZkI,aAAA,CAACnI,aAAa;IACbqI,OAAO,EAAGJ,YAAc;IACxBK,QAAQ,EAAG,CAAE5G,OAAS;IACtB6G,yBAAyB;EAAA,GAEvBrI,EAAE,CAAE,OAAQ,CACA,CACF,CACA,CACf,EAECgI,QAAQ,KAAK,IAAI,GAClBC,aAAA;IAAA,GAAUX;EAAgB,CAAI,CAAC,GAE/BW,aAAA;IAAA,GAAUb;EAAU,GAAKY,QAAe,CAEvB,CAAC;AAEtB"}
|
|
1
|
+
{"version":3,"names":["classnames","useRegistry","useSelect","useDispatch","useRef","useMemo","useEffect","useEntityRecord","store","coreStore","Placeholder","Spinner","ToolbarButton","ToolbarGroup","__","useInnerBlocksProps","RecursionProvider","useHasRecursion","InnerBlocks","useBlockProps","Warning","privateApis","blockEditorPrivateApis","blockEditorStore","BlockControls","patternsPrivateApis","parse","cloneBlock","blocksStore","RichTextData","name","patternBlockName","unlock","useLayoutClasses","isOverridableBlock","fullAlignments","getLegacyIdMap","blocks","content","nameCount","idToClientIdMap","block","innerBlocks","length","id","attributes","metadata","clientId","useInferredLayout","parentLayout","initialInferredAlignmentRef","alignment","current","undefined","isConstrained","type","hasFullAlignment","some","includes","align","layout","hasOverridableBlocks","getOverridableAttributes","Object","entries","bindings","filter","binding","source","map","attributeKey","applyInitialContentValuesToInnerBlocks","defaultValues","legacyIdMap","_legacyIdMap$block$cl","metadataName","newAttributes","_defaultValues$metada","contentValues","isAttributeEqual","attribute1","attribute2","toString","getContentValuesFromInnerBlocks","_legacyIdMap$block$cl2","assign","_content$metadataName","keys","setBlockEditMode","setEditMode","mode","forEach","editMode","ReusableBlockEdit","ref","__unstableParentLayout","patternClientId","setAttributes","registry","hasAlreadyRendered","record","editedRecord","hasResolved","isMissing","initialContent","defaultContent","replaceInnerBlocks","__unstableMarkNextChangeAsNotPersistent","setBlockEditingMode","syncDerivedUpdates","userCanEdit","getBlockEditingMode","onNavigateToEntityRecord","editingMode","hasPatternOverridesSource","select","canUser","getBlocks","getSettings","_getBlockEditingMode","getBlockBindingsSource","canEdit","canOverrideBlocks","initialBlocks","_editedRecord$blocks$","originalEditingMode","batch","layoutClasses","blockProps","className","innerBlocksProps","templateLock","renderAppender","ButtonBlockAppender","prevBlocks","subscribe","handleEditOriginal","postId","postType","resetContent","children","createElement","uniqueId","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/block-library/src/block/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, useMemo, useEffect } from '@wordpress/element';\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInnerBlocks,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { parse, cloneBlock, store as blocksStore } from '@wordpress/blocks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { name as patternBlockName } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\nconst { isOverridableBlock } = unlock( patternsPrivateApis );\n\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nfunction getLegacyIdMap( blocks, content, nameCount = {} ) {\n\tlet idToClientIdMap = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block?.innerBlocks?.length ) {\n\t\t\tidToClientIdMap = {\n\t\t\t\t...idToClientIdMap,\n\t\t\t\t...getLegacyIdMap( block.innerBlocks, content, nameCount ),\n\t\t\t};\n\t\t}\n\n\t\tconst id = block.attributes.metadata?.id;\n\t\tconst clientId = block.clientId;\n\t\tif ( id && content?.[ id ] ) {\n\t\t\tidToClientIdMap[ clientId ] = id;\n\t\t}\n\t}\n\treturn idToClientIdMap;\n}\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nfunction hasOverridableBlocks( blocks ) {\n\treturn blocks.some( ( block ) => {\n\t\tif ( isOverridableBlock( block ) ) return true;\n\t\treturn hasOverridableBlocks( block.innerBlocks );\n\t} );\n}\n\nfunction getOverridableAttributes( block ) {\n\treturn Object.entries( block.attributes.metadata.bindings )\n\t\t.filter(\n\t\t\t( [ , binding ] ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t\t.map( ( [ attributeKey ] ) => attributeKey );\n}\n\nfunction applyInitialContentValuesToInnerBlocks(\n\tblocks,\n\tcontent = {},\n\tdefaultValues,\n\tlegacyIdMap\n) {\n\treturn blocks.map( ( block ) => {\n\t\tconst innerBlocks = applyInitialContentValuesToInnerBlocks(\n\t\t\tblock.innerBlocks,\n\t\t\tcontent,\n\t\t\tdefaultValues,\n\t\t\tlegacyIdMap\n\t\t);\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\n\t\tif ( ! metadataName || ! isOverridableBlock( block ) ) {\n\t\t\treturn { ...block, innerBlocks };\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\t\tconst newAttributes = { ...block.attributes };\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tdefaultValues[ metadataName ] ??= {};\n\t\t\tdefaultValues[ metadataName ][ attributeKey ] =\n\t\t\t\tblock.attributes[ attributeKey ];\n\n\t\t\tconst contentValues = content[ metadataName ];\n\t\t\tif ( contentValues?.[ attributeKey ] !== undefined ) {\n\t\t\t\tnewAttributes[ attributeKey ] = contentValues[ attributeKey ];\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: newAttributes,\n\t\t\tinnerBlocks,\n\t\t};\n\t} );\n}\n\nfunction isAttributeEqual( attribute1, attribute2 ) {\n\tif (\n\t\tattribute1 instanceof RichTextData &&\n\t\tattribute2 instanceof RichTextData\n\t) {\n\t\treturn attribute1.toString() === attribute2.toString();\n\t}\n\treturn attribute1 === attribute2;\n}\n\nfunction getContentValuesFromInnerBlocks( blocks, defaultValues, legacyIdMap ) {\n\t/** @type {Record<string, { values: Record<string, unknown>}>} */\n\tconst content = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block.name === patternBlockName ) continue;\n\t\tif ( block.innerBlocks.length ) {\n\t\t\tObject.assign(\n\t\t\t\tcontent,\n\t\t\t\tgetContentValuesFromInnerBlocks(\n\t\t\t\t\tblock.innerBlocks,\n\t\t\t\t\tdefaultValues,\n\t\t\t\t\tlegacyIdMap\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\t\tif ( ! metadataName || ! isOverridableBlock( block ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tif (\n\t\t\t\t! isAttributeEqual(\n\t\t\t\t\tblock.attributes[ attributeKey ],\n\t\t\t\t\tdefaultValues?.[ metadataName ]?.[ attributeKey ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontent[ metadataName ] ??= {};\n\t\t\t\t// TODO: We need a way to represent `undefined` in the serialized overrides.\n\t\t\t\t// Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871\n\t\t\t\tcontent[ metadataName ][ attributeKey ] =\n\t\t\t\t\tblock.attributes[ attributeKey ] === undefined\n\t\t\t\t\t\t? // TODO: We use an empty string to represent undefined for now until\n\t\t\t\t\t\t // we support a richer format for overrides and the block binding API.\n\t\t\t\t\t\t // Currently only the `linkTarget` attribute of `core/button` is affected.\n\t\t\t\t\t\t ''\n\t\t\t\t\t\t: block.attributes[ attributeKey ];\n\t\t\t}\n\t\t}\n\t}\n\treturn Object.keys( content ).length > 0 ? content : undefined;\n}\n\nfunction setBlockEditMode( setEditMode, blocks, mode ) {\n\tblocks.forEach( ( block ) => {\n\t\tconst editMode =\n\t\t\tmode ||\n\t\t\t( isOverridableBlock( block ) ? 'contentOnly' : 'disabled' );\n\t\tsetEditMode( block.clientId, editMode );\n\n\t\tsetBlockEditMode(\n\t\t\tsetEditMode,\n\t\t\tblock.innerBlocks,\n\t\t\t// Disable editing for nested patterns.\n\t\t\tblock.name === patternBlockName ? 'disabled' : mode\n\t\t);\n\t} );\n}\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref, content },\n\t__unstableParentLayout: parentLayout,\n\tclientId: patternClientId,\n\tsetAttributes,\n} ) {\n\tconst registry = useRegistry();\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, editedRecord, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\t// The initial value of the `content` attribute.\n\tconst initialContent = useRef( content );\n\n\t// The default content values from the original pattern for overridable attributes.\n\t// Set by the `applyInitialContentValuesToInnerBlocks` function.\n\tconst defaultContent = useRef( {} );\n\n\tconst {\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetBlockEditingMode,\n\t} = useDispatch( blockEditorStore );\n\tconst { syncDerivedUpdates } = unlock( useDispatch( blockEditorStore ) );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tuserCanEdit,\n\t\tgetBlockEditingMode,\n\t\tonNavigateToEntityRecord,\n\t\teditingMode,\n\t\thasPatternOverridesSource,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tconst canEdit = canUser( 'update', 'blocks', ref );\n\n\t\t\t// For editing link to the site editor if the theme and user permissions support it.\n\t\t\treturn {\n\t\t\t\tinnerBlocks: blocks,\n\t\t\t\tuserCanEdit: canEdit,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\teditingMode: _getBlockEditingMode( patternClientId ),\n\t\t\t\thasPatternOverridesSource: !! getBlockBindingsSource(\n\t\t\t\t\t'core/pattern-overrides'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ patternClientId, ref ]\n\t);\n\n\t// Sync the editing mode of the pattern block with the inner blocks.\n\tuseEffect( () => {\n\t\tsetBlockEditMode(\n\t\t\tsetBlockEditingMode,\n\t\t\tinnerBlocks,\n\t\t\t// Disable editing if the pattern itself is disabled.\n\t\t\teditingMode === 'disabled' || ! hasPatternOverridesSource\n\t\t\t\t? 'disabled'\n\t\t\t\t: undefined\n\t\t);\n\t}, [\n\t\teditingMode,\n\t\tinnerBlocks,\n\t\tsetBlockEditingMode,\n\t\thasPatternOverridesSource,\n\t] );\n\n\tconst canOverrideBlocks = useMemo(\n\t\t() => hasPatternOverridesSource && hasOverridableBlocks( innerBlocks ),\n\t\t[ hasPatternOverridesSource, innerBlocks ]\n\t);\n\n\tconst initialBlocks = useMemo(\n\t\t() =>\n\t\t\t// Clone the blocks to generate new client IDs.\n\t\t\teditedRecord.blocks?.map( ( block ) => cloneBlock( block ) ) ??\n\t\t\t( editedRecord.content && typeof editedRecord.content !== 'function'\n\t\t\t\t? parse( editedRecord.content )\n\t\t\t\t: [] ),\n\t\t[ editedRecord.blocks, editedRecord.content ]\n\t);\n\n\tconst legacyIdMap = useRef( {} );\n\n\t// Apply the initial overrides from the pattern block to the inner blocks.\n\tuseEffect( () => {\n\t\t// Build a map of clientIds to the old nano id system to provide back compat.\n\t\tlegacyIdMap.current = getLegacyIdMap(\n\t\t\tinitialBlocks,\n\t\t\tinitialContent.current\n\t\t);\n\t\tdefaultContent.current = {};\n\t\tconst originalEditingMode = getBlockEditingMode( patternClientId );\n\t\t// Replace the contents of the blocks with the overrides.\n\t\tregistry.batch( () => {\n\t\t\tsetBlockEditingMode( patternClientId, 'default' );\n\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\tconst blocks = hasPatternOverridesSource\n\t\t\t\t\t? applyInitialContentValuesToInnerBlocks(\n\t\t\t\t\t\t\tinitialBlocks,\n\t\t\t\t\t\t\tinitialContent.current,\n\t\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\t\tlegacyIdMap.current\n\t\t\t\t\t )\n\t\t\t\t\t: initialBlocks;\n\n\t\t\t\treplaceInnerBlocks( patternClientId, blocks );\n\t\t\t} );\n\t\t\tsetBlockEditingMode( patternClientId, originalEditingMode );\n\t\t} );\n\t}, [\n\t\thasPatternOverridesSource,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tpatternClientId,\n\t\tinitialBlocks,\n\t\treplaceInnerBlocks,\n\t\tregistry,\n\t\tgetBlockEditingMode,\n\t\tsetBlockEditingMode,\n\t\tsyncDerivedUpdates,\n\t] );\n\n\tconst { alignment, layout } = useInferredLayout(\n\t\tinnerBlocks,\n\t\tparentLayout\n\t);\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: 'all',\n\t\tlayout,\n\t\trenderAppender: innerBlocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\t// Sync the `content` attribute from the updated blocks to the pattern block.\n\t// `syncDerivedUpdates` is used here to avoid creating an additional undo level.\n\tuseEffect( () => {\n\t\tif ( ! hasPatternOverridesSource ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { getBlocks } = registry.select( blockEditorStore );\n\t\tlet prevBlocks = getBlocks( patternClientId );\n\t\treturn registry.subscribe( () => {\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tif ( blocks !== prevBlocks ) {\n\t\t\t\tprevBlocks = blocks;\n\t\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: getContentValuesFromInnerBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\t\tlegacyIdMap.current\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}, blockEditorStore );\n\t}, [\n\t\thasPatternOverridesSource,\n\t\tsyncDerivedUpdates,\n\t\tpatternClientId,\n\t\tregistry,\n\t\tsetAttributes,\n\t] );\n\n\tconst handleEditOriginal = () => {\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: ref,\n\t\t\tpostType: 'wp_block',\n\t\t} );\n\t};\n\n\tconst resetContent = () => {\n\t\tif ( content ) {\n\t\t\treplaceInnerBlocks( patternClientId, initialBlocks );\n\t\t}\n\t};\n\n\tlet children = null;\n\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t{ userCanEdit && onNavigateToEntityRecord && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton onClick={ handleEditOriginal }>\n\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ canOverrideBlocks && (\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={ resetContent }\n\t\t\t\t\t\t\tdisabled={ ! content }\n\t\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,WAAW,EAAEC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACrE,SAASC,MAAM,EAAEC,OAAO,EAAEC,SAAS,QAAQ,oBAAoB;AAC/D,SAASC,eAAe,EAAEC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AAC1E,SACCC,WAAW,EACXC,OAAO,EACPC,aAAa,EACbC,YAAY,QACN,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SACCC,mBAAmB,EACnBC,iBAAiB,EACjBC,eAAe,EACfC,WAAW,EACXC,aAAa,EACbC,OAAO,EACPC,WAAW,IAAIC,sBAAsB,EACrCd,KAAK,IAAIe,gBAAgB,EACzBC,aAAa,QACP,yBAAyB;AAChC,SAASH,WAAW,IAAII,mBAAmB,QAAQ,qBAAqB;AACxE,SAASC,KAAK,EAAEC,UAAU,EAAEnB,KAAK,IAAIoB,WAAW,QAAQ,mBAAmB;AAC3E,SAASC,YAAY,QAAQ,sBAAsB;;AAEnD;AACA;AACA;AACA,SAASC,IAAI,IAAIC,gBAAgB,QAAQ,SAAS;AAClD,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,MAAM;EAAEC;AAAiB,CAAC,GAAGD,MAAM,CAAEV,sBAAuB,CAAC;AAC7D,MAAM;EAAEY;AAAmB,CAAC,GAAGF,MAAM,CAAEP,mBAAoB,CAAC;AAE5D,MAAMU,cAAc,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAE;AAE1D,SAASC,cAAcA,CAAEC,MAAM,EAAEC,OAAO,EAAEC,SAAS,GAAG,CAAC,CAAC,EAAG;EAC1D,IAAIC,eAAe,GAAG,CAAC,CAAC;EACxB,KAAM,MAAMC,KAAK,IAAIJ,MAAM,EAAG;IAC7B,IAAKI,KAAK,EAAEC,WAAW,EAAEC,MAAM,EAAG;MACjCH,eAAe,GAAG;QACjB,GAAGA,eAAe;QAClB,GAAGJ,cAAc,CAAEK,KAAK,CAACC,WAAW,EAAEJ,OAAO,EAAEC,SAAU;MAC1D,CAAC;IACF;IAEA,MAAMK,EAAE,GAAGH,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEF,EAAE;IACxC,MAAMG,QAAQ,GAAGN,KAAK,CAACM,QAAQ;IAC/B,IAAKH,EAAE,IAAIN,OAAO,GAAIM,EAAE,CAAE,EAAG;MAC5BJ,eAAe,CAAEO,QAAQ,CAAE,GAAGH,EAAE;IACjC;EACD;EACA,OAAOJ,eAAe;AACvB;AAEA,MAAMQ,iBAAiB,GAAGA,CAAEX,MAAM,EAAEY,YAAY,KAAM;EACrD,MAAMC,2BAA2B,GAAG9C,MAAM,CAAC,CAAC;EAE5C,OAAOC,OAAO,CAAE,MAAM;IACrB;IACA,IAAK,CAAEgC,MAAM,EAAEM,MAAM,EAAG;MACvB,OAAO,CAAC,CAAC;IACV;IAEA,IAAIQ,SAAS,GAAGD,2BAA2B,CAACE,OAAO;;IAEnD;IACA;IACA,IAAKD,SAAS,KAAKE,SAAS,EAAG;MAC9B,MAAMC,aAAa,GAAGL,YAAY,EAAEM,IAAI,KAAK,aAAa;MAC1D,MAAMC,gBAAgB,GAAGnB,MAAM,CAACoB,IAAI,CAAIhB,KAAK,IAC5CN,cAAc,CAACuB,QAAQ,CAAEjB,KAAK,CAACI,UAAU,CAACc,KAAM,CACjD,CAAC;MAEDR,SAAS,GAAGG,aAAa,IAAIE,gBAAgB,GAAG,MAAM,GAAG,IAAI;MAC7DN,2BAA2B,CAACE,OAAO,GAAGD,SAAS;IAChD;IAEA,MAAMS,MAAM,GAAGT,SAAS,GAAGF,YAAY,GAAGI,SAAS;IAEnD,OAAO;MAAEF,SAAS;MAAES;IAAO,CAAC;EAC7B,CAAC,EAAE,CAAEvB,MAAM,EAAEY,YAAY,CAAG,CAAC;AAC9B,CAAC;AAED,SAASY,oBAAoBA,CAAExB,MAAM,EAAG;EACvC,OAAOA,MAAM,CAACoB,IAAI,CAAIhB,KAAK,IAAM;IAChC,IAAKP,kBAAkB,CAAEO,KAAM,CAAC,EAAG,OAAO,IAAI;IAC9C,OAAOoB,oBAAoB,CAAEpB,KAAK,CAACC,WAAY,CAAC;EACjD,CAAE,CAAC;AACJ;AAEA,SAASoB,wBAAwBA,CAAErB,KAAK,EAAG;EAC1C,OAAOsB,MAAM,CAACC,OAAO,CAAEvB,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACmB,QAAS,CAAC,CACzDC,MAAM,CACN,CAAE,GAAIC,OAAO,CAAE,KAAMA,OAAO,CAACC,MAAM,KAAK,wBACzC,CAAC,CACAC,GAAG,CAAE,CAAE,CAAEC,YAAY,CAAE,KAAMA,YAAa,CAAC;AAC9C;AAEA,SAASC,sCAAsCA,CAC9ClC,MAAM,EACNC,OAAO,GAAG,CAAC,CAAC,EACZkC,aAAa,EACbC,WAAW,EACV;EACD,OAAOpC,MAAM,CAACgC,GAAG,CAAI5B,KAAK,IAAM;IAAA,IAAAiC,qBAAA;IAC/B,MAAMhC,WAAW,GAAG6B,sCAAsC,CACzD9B,KAAK,CAACC,WAAW,EACjBJ,OAAO,EACPkC,aAAa,EACbC,WACD,CAAC;IACD,MAAME,YAAY,IAAAD,qBAAA,GACjBD,WAAW,GAAIhC,KAAK,CAACM,QAAQ,CAAE,cAAA2B,qBAAA,cAAAA,qBAAA,GAAIjC,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEhB,IAAI;IAEnE,IAAK,CAAE6C,YAAY,IAAI,CAAEzC,kBAAkB,CAAEO,KAAM,CAAC,EAAG;MACtD,OAAO;QAAE,GAAGA,KAAK;QAAEC;MAAY,CAAC;IACjC;IAEA,MAAMG,UAAU,GAAGiB,wBAAwB,CAAErB,KAAM,CAAC;IACpD,MAAMmC,aAAa,GAAG;MAAE,GAAGnC,KAAK,CAACI;IAAW,CAAC;IAC7C,KAAM,MAAMyB,YAAY,IAAIzB,UAAU,EAAG;MAAA,IAAAgC,qBAAA;MACxC,CAAAA,qBAAA,GAAAL,aAAa,CAAEG,YAAY,CAAE,cAAAE,qBAAA,cAAAA,qBAAA,GAA7BL,aAAa,CAAEG,YAAY,CAAE,GAAK,CAAC,CAAC;MACpCH,aAAa,CAAEG,YAAY,CAAE,CAAEL,YAAY,CAAE,GAC5C7B,KAAK,CAACI,UAAU,CAAEyB,YAAY,CAAE;MAEjC,MAAMQ,aAAa,GAAGxC,OAAO,CAAEqC,YAAY,CAAE;MAC7C,IAAKG,aAAa,GAAIR,YAAY,CAAE,KAAKjB,SAAS,EAAG;QACpDuB,aAAa,CAAEN,YAAY,CAAE,GAAGQ,aAAa,CAAER,YAAY,CAAE;MAC9D;IACD;IACA,OAAO;MACN,GAAG7B,KAAK;MACRI,UAAU,EAAE+B,aAAa;MACzBlC;IACD,CAAC;EACF,CAAE,CAAC;AACJ;AAEA,SAASqC,gBAAgBA,CAAEC,UAAU,EAAEC,UAAU,EAAG;EACnD,IACCD,UAAU,YAAYnD,YAAY,IAClCoD,UAAU,YAAYpD,YAAY,EACjC;IACD,OAAOmD,UAAU,CAACE,QAAQ,CAAC,CAAC,KAAKD,UAAU,CAACC,QAAQ,CAAC,CAAC;EACvD;EACA,OAAOF,UAAU,KAAKC,UAAU;AACjC;AAEA,SAASE,+BAA+BA,CAAE9C,MAAM,EAAEmC,aAAa,EAAEC,WAAW,EAAG;EAC9E;EACA,MAAMnC,OAAO,GAAG,CAAC,CAAC;EAClB,KAAM,MAAMG,KAAK,IAAIJ,MAAM,EAAG;IAAA,IAAA+C,sBAAA;IAC7B,IAAK3C,KAAK,CAACX,IAAI,KAAKC,gBAAgB,EAAG;IACvC,IAAKU,KAAK,CAACC,WAAW,CAACC,MAAM,EAAG;MAC/BoB,MAAM,CAACsB,MAAM,CACZ/C,OAAO,EACP6C,+BAA+B,CAC9B1C,KAAK,CAACC,WAAW,EACjB8B,aAAa,EACbC,WACD,CACD,CAAC;IACF;IACA,MAAME,YAAY,IAAAS,sBAAA,GACjBX,WAAW,GAAIhC,KAAK,CAACM,QAAQ,CAAE,cAAAqC,sBAAA,cAAAA,sBAAA,GAAI3C,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEhB,IAAI;IACnE,IAAK,CAAE6C,YAAY,IAAI,CAAEzC,kBAAkB,CAAEO,KAAM,CAAC,EAAG;MACtD;IACD;IAEA,MAAMI,UAAU,GAAGiB,wBAAwB,CAAErB,KAAM,CAAC;IAEpD,KAAM,MAAM6B,YAAY,IAAIzB,UAAU,EAAG;MACxC,IACC,CAAEkC,gBAAgB,CACjBtC,KAAK,CAACI,UAAU,CAAEyB,YAAY,CAAE,EAChCE,aAAa,GAAIG,YAAY,CAAE,GAAIL,YAAY,CAChD,CAAC,EACA;QAAA,IAAAgB,qBAAA;QACD,CAAAA,qBAAA,GAAAhD,OAAO,CAAEqC,YAAY,CAAE,cAAAW,qBAAA,cAAAA,qBAAA,GAAvBhD,OAAO,CAAEqC,YAAY,CAAE,GAAK,CAAC,CAAC;QAC9B;QACA;QACArC,OAAO,CAAEqC,YAAY,CAAE,CAAEL,YAAY,CAAE,GACtC7B,KAAK,CAACI,UAAU,CAAEyB,YAAY,CAAE,KAAKjB,SAAS;QAC3C;QACA;QACA;QACA,EAAE,GACFZ,KAAK,CAACI,UAAU,CAAEyB,YAAY,CAAE;MACrC;IACD;EACD;EACA,OAAOP,MAAM,CAACwB,IAAI,CAAEjD,OAAQ,CAAC,CAACK,MAAM,GAAG,CAAC,GAAGL,OAAO,GAAGe,SAAS;AAC/D;AAEA,SAASmC,gBAAgBA,CAAEC,WAAW,EAAEpD,MAAM,EAAEqD,IAAI,EAAG;EACtDrD,MAAM,CAACsD,OAAO,CAAIlD,KAAK,IAAM;IAC5B,MAAMmD,QAAQ,GACbF,IAAI,KACFxD,kBAAkB,CAAEO,KAAM,CAAC,GAAG,aAAa,GAAG,UAAU,CAAE;IAC7DgD,WAAW,CAAEhD,KAAK,CAACM,QAAQ,EAAE6C,QAAS,CAAC;IAEvCJ,gBAAgB,CACfC,WAAW,EACXhD,KAAK,CAACC,WAAW;IACjB;IACAD,KAAK,CAACX,IAAI,KAAKC,gBAAgB,GAAG,UAAU,GAAG2D,IAChD,CAAC;EACF,CAAE,CAAC;AACJ;AAEA,eAAe,SAASG,iBAAiBA,CAAE;EAC1C/D,IAAI;EACJe,UAAU,EAAE;IAAEiD,GAAG;IAAExD;EAAQ,CAAC;EAC5ByD,sBAAsB,EAAE9C,YAAY;EACpCF,QAAQ,EAAEiD,eAAe;EACzBC;AACD,CAAC,EAAG;EACH,MAAMC,QAAQ,GAAGjG,WAAW,CAAC,CAAC;EAC9B,MAAMkG,kBAAkB,GAAGlF,eAAe,CAAE6E,GAAI,CAAC;EACjD,MAAM;IAAEM,MAAM;IAAEC,YAAY;IAAEC;EAAY,CAAC,GAAG/F,eAAe,CAC5D,UAAU,EACV,UAAU,EACVuF,GACD,CAAC;EACD,MAAMS,SAAS,GAAGD,WAAW,IAAI,CAAEF,MAAM;;EAEzC;EACA,MAAMI,cAAc,GAAGpG,MAAM,CAAEkC,OAAQ,CAAC;;EAExC;EACA;EACA,MAAMmE,cAAc,GAAGrG,MAAM,CAAE,CAAC,CAAE,CAAC;EAEnC,MAAM;IACLsG,kBAAkB;IAClBC,uCAAuC;IACvCC;EACD,CAAC,GAAGzG,WAAW,CAAEoB,gBAAiB,CAAC;EACnC,MAAM;IAAEsF;EAAmB,CAAC,GAAG7E,MAAM,CAAE7B,WAAW,CAAEoB,gBAAiB,CAAE,CAAC;EAExE,MAAM;IACLmB,WAAW;IACXoE,WAAW;IACXC,mBAAmB;IACnBC,wBAAwB;IACxBC,WAAW;IACXC;EACD,CAAC,GAAGhH,SAAS,CACViH,MAAM,IAAM;IACb,MAAM;MAAEC;IAAQ,CAAC,GAAGD,MAAM,CAAE1G,SAAU,CAAC;IACvC,MAAM;MACL4G,SAAS;MACTC,WAAW;MACXP,mBAAmB,EAAEQ;IACtB,CAAC,GAAGJ,MAAM,CAAE5F,gBAAiB,CAAC;IAC9B,MAAM;MAAEiG;IAAuB,CAAC,GAAGxF,MAAM,CAAEmF,MAAM,CAAEvF,WAAY,CAAE,CAAC;IAClE,MAAMS,MAAM,GAAGgF,SAAS,CAAErB,eAAgB,CAAC;IAC3C,MAAMyB,OAAO,GAAGL,OAAO,CAAE,QAAQ,EAAE,QAAQ,EAAEtB,GAAI,CAAC;;IAElD;IACA,OAAO;MACNpD,WAAW,EAAEL,MAAM;MACnByE,WAAW,EAAEW,OAAO;MACpBV,mBAAmB,EAAEQ,oBAAoB;MACzCP,wBAAwB,EACvBM,WAAW,CAAC,CAAC,CAACN,wBAAwB;MACvCC,WAAW,EAAEM,oBAAoB,CAAEvB,eAAgB,CAAC;MACpDkB,yBAAyB,EAAE,CAAC,CAAEM,sBAAsB,CACnD,wBACD;IACD,CAAC;EACF,CAAC,EACD,CAAExB,eAAe,EAAEF,GAAG,CACvB,CAAC;;EAED;EACAxF,SAAS,CAAE,MAAM;IAChBkF,gBAAgB,CACfoB,mBAAmB,EACnBlE,WAAW;IACX;IACAuE,WAAW,KAAK,UAAU,IAAI,CAAEC,yBAAyB,GACtD,UAAU,GACV7D,SACJ,CAAC;EACF,CAAC,EAAE,CACF4D,WAAW,EACXvE,WAAW,EACXkE,mBAAmB,EACnBM,yBAAyB,CACxB,CAAC;EAEH,MAAMQ,iBAAiB,GAAGrH,OAAO,CAChC,MAAM6G,yBAAyB,IAAIrD,oBAAoB,CAAEnB,WAAY,CAAC,EACtE,CAAEwE,yBAAyB,EAAExE,WAAW,CACzC,CAAC;EAED,MAAMiF,aAAa,GAAGtH,OAAO,CAC5B;IAAA,IAAAuH,qBAAA;IAAA,OACC;MAAA,CAAAA,qBAAA,GACAvB,YAAY,CAAChE,MAAM,EAAEgC,GAAG,CAAI5B,KAAK,IAAMd,UAAU,CAAEc,KAAM,CAAE,CAAC,cAAAmF,qBAAA,cAAAA,qBAAA,GAC1DvB,YAAY,CAAC/D,OAAO,IAAI,OAAO+D,YAAY,CAAC/D,OAAO,KAAK,UAAU,GACjEZ,KAAK,CAAE2E,YAAY,CAAC/D,OAAQ,CAAC,GAC7B;IAAE;EAAA,CAAE,EACR,CAAE+D,YAAY,CAAChE,MAAM,EAAEgE,YAAY,CAAC/D,OAAO,CAC5C,CAAC;EAED,MAAMmC,WAAW,GAAGrE,MAAM,CAAE,CAAC,CAAE,CAAC;;EAEhC;EACAE,SAAS,CAAE,MAAM;IAChB;IACAmE,WAAW,CAACrB,OAAO,GAAGhB,cAAc,CACnCuF,aAAa,EACbnB,cAAc,CAACpD,OAChB,CAAC;IACDqD,cAAc,CAACrD,OAAO,GAAG,CAAC,CAAC;IAC3B,MAAMyE,mBAAmB,GAAGd,mBAAmB,CAAEf,eAAgB,CAAC;IAClE;IACAE,QAAQ,CAAC4B,KAAK,CAAE,MAAM;MACrBlB,mBAAmB,CAAEZ,eAAe,EAAE,SAAU,CAAC;MACjDa,kBAAkB,CAAE,MAAM;QACzB,MAAMxE,MAAM,GAAG6E,yBAAyB,GACrC3C,sCAAsC,CACtCoD,aAAa,EACbnB,cAAc,CAACpD,OAAO,EACtBqD,cAAc,CAACrD,OAAO,EACtBqB,WAAW,CAACrB,OACZ,CAAC,GACDuE,aAAa;QAEhBjB,kBAAkB,CAAEV,eAAe,EAAE3D,MAAO,CAAC;MAC9C,CAAE,CAAC;MACHuE,mBAAmB,CAAEZ,eAAe,EAAE6B,mBAAoB,CAAC;IAC5D,CAAE,CAAC;EACJ,CAAC,EAAE,CACFX,yBAAyB,EACzBP,uCAAuC,EACvCX,eAAe,EACf2B,aAAa,EACbjB,kBAAkB,EAClBR,QAAQ,EACRa,mBAAmB,EACnBH,mBAAmB,EACnBC,kBAAkB,CACjB,CAAC;EAEH,MAAM;IAAE1D,SAAS;IAAES;EAAO,CAAC,GAAGZ,iBAAiB,CAC9CN,WAAW,EACXO,YACD,CAAC;EACD,MAAM8E,aAAa,GAAG9F,gBAAgB,CAAE;IAAE2B;EAAO,CAAC,EAAE9B,IAAK,CAAC;EAE1D,MAAMkG,UAAU,GAAG7G,aAAa,CAAE;IACjC8G,SAAS,EAAEjI,UAAU,CACpB,+CAA+C,EAC/C4D,MAAM,IAAImE,aAAa,EACvB;MAAE,CAAG,QAAQ5E,SAAW,EAAC,GAAIA;IAAU,CACxC;EACD,CAAE,CAAC;EAEH,MAAM+E,gBAAgB,GAAGnH,mBAAmB,CAAEiH,UAAU,EAAE;IACzDG,YAAY,EAAE,KAAK;IACnBvE,MAAM;IACNwE,cAAc,EAAE1F,WAAW,EAAEC,MAAM,GAChCU,SAAS,GACTnC,WAAW,CAACmH;EAChB,CAAE,CAAC;;EAEH;EACA;EACA/H,SAAS,CAAE,MAAM;IAChB,IAAK,CAAE4G,yBAAyB,EAAG;MAClC;IACD;IACA,MAAM;MAAEG;IAAU,CAAC,GAAGnB,QAAQ,CAACiB,MAAM,CAAE5F,gBAAiB,CAAC;IACzD,IAAI+G,UAAU,GAAGjB,SAAS,CAAErB,eAAgB,CAAC;IAC7C,OAAOE,QAAQ,CAACqC,SAAS,CAAE,MAAM;MAChC,MAAMlG,MAAM,GAAGgF,SAAS,CAAErB,eAAgB,CAAC;MAC3C,IAAK3D,MAAM,KAAKiG,UAAU,EAAG;QAC5BA,UAAU,GAAGjG,MAAM;QACnBwE,kBAAkB,CAAE,MAAM;UACzBZ,aAAa,CAAE;YACd3D,OAAO,EAAE6C,+BAA+B,CACvC9C,MAAM,EACNoE,cAAc,CAACrD,OAAO,EACtBqB,WAAW,CAACrB,OACb;UACD,CAAE,CAAC;QACJ,CAAE,CAAC;MACJ;IACD,CAAC,EAAE7B,gBAAiB,CAAC;EACtB,CAAC,EAAE,CACF2F,yBAAyB,EACzBL,kBAAkB,EAClBb,eAAe,EACfE,QAAQ,EACRD,aAAa,CACZ,CAAC;EAEH,MAAMuC,kBAAkB,GAAGA,CAAA,KAAM;IAChCxB,wBAAwB,CAAE;MACzByB,MAAM,EAAE3C,GAAG;MACX4C,QAAQ,EAAE;IACX,CAAE,CAAC;EACJ,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IAC1B,IAAKrG,OAAO,EAAG;MACdoE,kBAAkB,CAAEV,eAAe,EAAE2B,aAAc,CAAC;IACrD;EACD,CAAC;EAED,IAAIiB,QAAQ,GAAG,IAAI;EAEnB,IAAKzC,kBAAkB,EAAG;IACzByC,QAAQ,GACPC,aAAA,CAACzH,OAAO,QACLN,EAAE,CAAE,yCAA0C,CACxC,CACT;EACF;EAEA,IAAKyF,SAAS,EAAG;IAChBqC,QAAQ,GACPC,aAAA,CAACzH,OAAO,QACLN,EAAE,CAAE,2CAA4C,CAC1C,CACT;EACF;EAEA,IAAK,CAAEwF,WAAW,EAAG;IACpBsC,QAAQ,GACPC,aAAA,CAACnI,WAAW,QACXmI,aAAA,CAAClI,OAAO,MAAE,CACE,CACb;EACF;EAEA,OACCkI,aAAA,CAAC7H,iBAAiB;IAAC8H,QAAQ,EAAGhD;EAAK,GAChCgB,WAAW,IAAIE,wBAAwB,IACxC6B,aAAA,CAACrH,aAAa,QACbqH,aAAA,CAAChI,YAAY,QACZgI,aAAA,CAACjI,aAAa;IAACmI,OAAO,EAAGP;EAAoB,GAC1C1H,EAAE,CAAE,eAAgB,CACR,CACF,CACA,CACf,EAEC4G,iBAAiB,IAClBmB,aAAA,CAACrH,aAAa,QACbqH,aAAA,CAAChI,YAAY,QACZgI,aAAA,CAACjI,aAAa;IACbmI,OAAO,EAAGJ,YAAc;IACxBK,QAAQ,EAAG,CAAE1G,OAAS;IACtB2G,yBAAyB;EAAA,GAEvBnI,EAAE,CAAE,OAAQ,CACA,CACF,CACA,CACf,EAEC8H,QAAQ,KAAK,IAAI,GAClBC,aAAA;IAAA,GAAUX;EAAgB,CAAI,CAAC,GAE/BW,aAAA;IAAA,GAAUb;EAAU,GAAKY,QAAe,CAEvB,CAAC;AAEtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["View","AccessibilityInfo","Platform","Text","useCallback","useEffect","useState","useRef","useSelect","useDispatch","__","_x","RichText","InspectorControls","BlockControls","store","blockEditorStore","getColorObjectByAttributeValues","getGradientValueBySlug","__experimentalGetColorClassesAndStyles","getColorClassesAndStyles","PanelBody","ToolbarGroup","ToolbarButton","LinkSettingsNavigation","UnitControl","getValueAndUnit","BottomSheetSelectControl","CSS_UNITS","filterUnitsWithSettings","useMobileGlobalStylesColors","link","editPostStore","richTextStyle","styles","ColorBackground","MIN_BORDER_RADIUS_VALUE","MAX_BORDER_RADIUS_VALUE","INITIAL_MAX_WIDTH","MIN_WIDTH","MIN_WIDTH_MARGINS","button75","marginLeft","button50","button25","WidthPanel","selectedWidth","setAttributes","handleChange","newWidth","width","undefined","options","value","label","createElement","title","onChange","ButtonEdit","props","isSelected","parentWidth","initialBorderRadius","attributes","style","border","radius","valueUnit","editorSidebarOpened","numOfButtons","select","isEditorSidebarOpened","getBlockCount","getBlockRootClientId","parentId","clientId","blockCount","currentIsEditorSidebarOpened","closeGeneralSidebar","maxWidth","setMaxWidth","isLinkSheetVisible","setIsLinkSheetVisible","isButtonFocused","setIsButtonFocused","placeholderTextWidth","setPlaceholderTextWidth","borderRadiusUnit","setBorderRadiusUnit","richTextRef","colors","gradients","onToggleButtonFocus","onSetMaxWidth","richText","current","OS","blur","isScreenReaderEnabled","then","enabled","focus","linkSettingsActions","onPress","onClearSettings","linkSettingsOptions","url","placeholder","autoFocus","autoFill","openInNewTab","linkRel","noFocusLinkSettingOptions","getBackgroundColor","backgroundColor","gradient","gradientValue","colorProps","colorObject","color","background","defaultButton","getTextColor","textColor","onChangeText","text","onChangeBorderRadius","newRadius","newStyle","getNewStyle","onChangeBorderRadiusUnit","newRadiusUnit","newBorderRadius","getBorderRadiusValue","radiusUnit","onShowLinkSettings","onHideLinkSettings","rel","linkTarget","onLayout","nativeEvent","layout","isParentWidthDidChange","marginRight","spacing","isParentWidthChanged","isWidthChanged","onRemove","onDeleteBlock","onReplace","onPlaceholderTextWidth","textWidth","lines","Math","min","onSetRef","ref","onUnstableOnFocus","onBlur","dismissSheet","getLinkSettings","isCompatibleWithSettings","isVisible","onClose","withBottomSheet","hasPicker","actions","showIcon","getPlaceholderWidth","placeholderText","onTextLayout","currentBorderRadius","defaultBorderRadius","valueAndUnit","Number","isInteger","parseInt","valueToConvert","parseFloat","mergeBlocks","buttonStyle","align","paddingTop","borderWidth","borderRadiusValue","borderRadius","buttonBorderRadiusValue","floor","outlineBorderRadius","minWidth","isFixedWidth","outLineStyles","outline","borderColor","textStyles","paddingLeft","paddingRight","pointerEvents","setRef","textAlign","placeholderTextColor","identifier","tagName","id","withoutInteractiveFormatting","unstableOnFocus","__unstableMobileNoFocusOnMount","selectionColor","onMerge","fontSize","Fragment","icon","onClick","isActive","max","onUnitChange","unit","units"],"sources":["@wordpress/block-library/src/button/edit.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View, AccessibilityInfo, Platform, Text } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useState, useRef } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tRichText,\n\tInspectorControls,\n\tBlockControls,\n\tstore as blockEditorStore,\n\tgetColorObjectByAttributeValues,\n\tgetGradientValueBySlug,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tToolbarGroup,\n\tToolbarButton,\n\tLinkSettingsNavigation,\n\tUnitControl,\n\tgetValueAndUnit,\n\tBottomSheetSelectControl,\n\tCSS_UNITS,\n\tfilterUnitsWithSettings,\n\tuseMobileGlobalStylesColors,\n} from '@wordpress/components';\nimport { link } from '@wordpress/icons';\n// eslint-disable-next-line no-restricted-imports\nimport { store as editPostStore } from '@wordpress/edit-post';\n\n/**\n * Internal dependencies\n */\nimport richTextStyle from './rich-text.scss';\nimport styles from './editor.scss';\nimport ColorBackground from './color-background';\n\nconst MIN_BORDER_RADIUS_VALUE = 0;\nconst MAX_BORDER_RADIUS_VALUE = 50;\nconst INITIAL_MAX_WIDTH = 108;\nconst MIN_WIDTH = 40;\n// Map of the percentage width to pixel subtraction that make the buttons fit nicely into columns.\nconst MIN_WIDTH_MARGINS = {\n\t100: 0,\n\t75: styles.button75?.marginLeft,\n\t50: styles.button50?.marginLeft,\n\t25: styles.button25?.marginLeft,\n};\n\nfunction WidthPanel( { selectedWidth, setAttributes } ) {\n\tfunction handleChange( newWidth ) {\n\t\t// Check if we are toggling the width off\n\t\tlet width = selectedWidth === newWidth ? undefined : newWidth;\n\t\tif ( newWidth === 'auto' ) {\n\t\t\twidth = undefined;\n\t\t}\n\t\t// Update attributes.\n\t\tsetAttributes( { width } );\n\t}\n\n\tconst options = [\n\t\t{ value: 'auto', label: __( 'Auto' ) },\n\t\t{ value: 25, label: '25%' },\n\t\t{ value: 50, label: '50%' },\n\t\t{ value: 75, label: '75%' },\n\t\t{ value: 100, label: '100%' },\n\t];\n\n\tif ( ! selectedWidth ) {\n\t\tselectedWidth = 'auto';\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Width Settings' ) }>\n\t\t\t<BottomSheetSelectControl\n\t\t\t\tlabel={ __( 'Button width' ) }\n\t\t\t\tvalue={ selectedWidth }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\toptions={ options }\n\t\t\t/>\n\t\t</PanelBody>\n\t);\n}\n\nfunction ButtonEdit( props ) {\n\tconst { isSelected, parentWidth } = props;\n\tconst initialBorderRadius = props?.attributes?.style?.border?.radius;\n\tconst { valueUnit = 'px' } = getValueAndUnit( initialBorderRadius ) || {};\n\n\tconst { editorSidebarOpened, numOfButtons } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isEditorSidebarOpened } = select( editPostStore );\n\t\t\tconst { getBlockCount, getBlockRootClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst parentId = getBlockRootClientId( clientId );\n\t\t\tconst blockCount = getBlockCount( parentId );\n\t\t\tconst currentIsEditorSidebarOpened = isEditorSidebarOpened();\n\n\t\t\treturn {\n\t\t\t\teditorSidebarOpened: isSelected && currentIsEditorSidebarOpened,\n\t\t\t\tnumOfButtons: blockCount,\n\t\t\t};\n\t\t},\n\t\t[ clientId, isSelected ]\n\t);\n\n\tconst { closeGeneralSidebar } = useDispatch( editPostStore );\n\tconst [ maxWidth, setMaxWidth ] = useState( INITIAL_MAX_WIDTH );\n\tconst [ isLinkSheetVisible, setIsLinkSheetVisible ] = useState( false );\n\tconst [ isButtonFocused, setIsButtonFocused ] = useState( true );\n\tconst [ placeholderTextWidth, setPlaceholderTextWidth ] = useState( 0 );\n\tconst [ borderRadiusUnit, setBorderRadiusUnit ] = useState( valueUnit );\n\n\tconst richTextRef = useRef();\n\tconst colors = useMobileGlobalStylesColors();\n\tconst gradients = useMobileGlobalStylesColors( 'gradients' );\n\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\tonToggleButtonFocus( true );\n\t\t}\n\t}, [ isSelected ] );\n\n\tuseEffect( () => {\n\t\tonSetMaxWidth( null, true );\n\t}, [ parentWidth ] );\n\n\tuseEffect( () => {\n\t\t// Blur `RichText` on Android when link settings sheet or button settings sheet is opened,\n\t\t// to avoid flashing caret after closing one of them\n\t\tconst richText = richTextRef?.current;\n\t\tif ( Platform.OS === 'android' && richText ) {\n\t\t\tif ( editorSidebarOpened || isLinkSheetVisible ) {\n\t\t\t\trichText.blur();\n\t\t\t\tonToggleButtonFocus( false );\n\t\t\t} else {\n\t\t\t\tonToggleButtonFocus( true );\n\t\t\t}\n\t\t}\n\t}, [ editorSidebarOpened, isLinkSheetVisible ] );\n\n\tuseEffect( () => {\n\t\tif ( richTextRef?.current ) {\n\t\t\tif ( ! isSelected && isButtonFocused ) {\n\t\t\t\tonToggleButtonFocus( false );\n\t\t\t}\n\n\t\t\tif ( isSelected && ! isButtonFocused ) {\n\t\t\t\tAccessibilityInfo.isScreenReaderEnabled().then( ( enabled ) => {\n\t\t\t\t\tif ( enabled ) {\n\t\t\t\t\t\tonToggleButtonFocus( true );\n\t\t\t\t\t\trichTextRef?.current.focus();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}, [ isSelected, isButtonFocused ] );\n\n\tconst linkSettingsActions = [\n\t\t{\n\t\t\tlabel: __( 'Remove link' ),\n\t\t\tonPress: onClearSettings,\n\t\t},\n\t];\n\n\tconst linkSettingsOptions = {\n\t\turl: {\n\t\t\tlabel: __( 'Button Link URL' ),\n\t\t\tplaceholder: __( 'Add URL' ),\n\t\t\tautoFocus: true,\n\t\t\tautoFill: false,\n\t\t},\n\t\topenInNewTab: {\n\t\t\tlabel: __( 'Open in new tab' ),\n\t\t},\n\t\tlinkRel: {\n\t\t\tlabel: __( 'Link Rel' ),\n\t\t\tplaceholder: _x( 'None', 'Link rel attribute value placeholder' ),\n\t\t},\n\t};\n\n\tconst noFocusLinkSettingOptions = {\n\t\t...linkSettingsOptions,\n\t\turl: {\n\t\t\t...linkSettingsOptions.url,\n\t\t\tautoFocus: false,\n\t\t},\n\t};\n\n\tfunction getBackgroundColor() {\n\t\tconst { attributes, style } = props;\n\t\tconst { backgroundColor, gradient } = attributes;\n\n\t\t// Return named gradient value if available.\n\t\tconst gradientValue = getGradientValueBySlug( gradients, gradient );\n\n\t\tif ( gradientValue ) {\n\t\t\treturn gradientValue;\n\t\t}\n\n\t\tconst colorProps = getColorClassesAndStyles( attributes );\n\n\t\t// Retrieve named color object to force inline styles for themes that\n\t\t// do not load their color stylesheets in the editor.\n\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\tcolors,\n\t\t\tbackgroundColor\n\t\t);\n\n\t\treturn (\n\t\t\tcolorObject?.color ||\n\t\t\tcolorProps.style?.backgroundColor ||\n\t\t\tcolorProps.style?.background ||\n\t\t\tstyle?.backgroundColor ||\n\t\t\tstyles.defaultButton.backgroundColor\n\t\t);\n\t}\n\n\tfunction getTextColor() {\n\t\tconst { attributes, style } = props;\n\t\tconst colorProps = getColorClassesAndStyles( attributes );\n\n\t\t// Retrieve named color object to force inline styles for themes that\n\t\t// do not load their color stylesheets in the editor.\n\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\tcolors,\n\t\t\tattributes.textColor\n\t\t);\n\n\t\treturn (\n\t\t\tcolorObject?.color ||\n\t\t\tcolorProps.style?.color ||\n\t\t\tstyle?.color ||\n\t\t\tstyles.defaultButton.color\n\t\t);\n\t}\n\n\tfunction onChangeText( value ) {\n\t\tconst { setAttributes } = props;\n\t\tsetAttributes( { text: value } );\n\t}\n\n\tfunction onChangeBorderRadius( newRadius ) {\n\t\tconst { setAttributes, attributes } = props;\n\t\tconst { style } = attributes;\n\t\tconst newStyle = getNewStyle( style, newRadius, borderRadiusUnit );\n\n\t\tsetAttributes( { style: newStyle } );\n\t}\n\n\tfunction onChangeBorderRadiusUnit( newRadiusUnit ) {\n\t\tconst { setAttributes, attributes } = props;\n\t\tconst { style } = attributes;\n\t\tconst newBorderRadius = getBorderRadiusValue(\n\t\t\tattributes?.style?.border?.radius\n\t\t);\n\t\tconst newStyle = getNewStyle( style, newBorderRadius, newRadiusUnit );\n\t\tsetAttributes( { style: newStyle } );\n\t\tsetBorderRadiusUnit( newRadiusUnit );\n\t}\n\n\tfunction getNewStyle( style, radius, radiusUnit ) {\n\t\treturn {\n\t\t\t...style,\n\t\t\tborder: {\n\t\t\t\t...style?.border,\n\t\t\t\tradius: `${ radius }${ radiusUnit }`, // Store the value with the unit so that it works as expected.\n\t\t\t},\n\t\t};\n\t}\n\n\tfunction onShowLinkSettings() {\n\t\tsetIsLinkSheetVisible( true );\n\t}\n\n\tfunction onHideLinkSettings() {\n\t\tsetIsLinkSheetVisible( false );\n\t}\n\n\tfunction onToggleButtonFocus( value ) {\n\t\tif ( value !== isButtonFocused ) {\n\t\t\tsetIsButtonFocused( value );\n\t\t}\n\t}\n\n\tfunction onClearSettings() {\n\t\tconst { setAttributes } = props;\n\n\t\tsetAttributes( {\n\t\t\turl: '',\n\t\t\trel: '',\n\t\t\tlinkTarget: '',\n\t\t} );\n\n\t\tonHideLinkSettings();\n\t}\n\n\tfunction onLayout( { nativeEvent } ) {\n\t\tconst { width } = nativeEvent.layout;\n\t\tonSetMaxWidth( width );\n\t}\n\n\tconst onSetMaxWidth = useCallback(\n\t\t( width, isParentWidthDidChange = false ) => {\n\t\t\tconst { marginRight: spacing } = styles.defaultButton;\n\n\t\t\tconst isParentWidthChanged = isParentWidthDidChange\n\t\t\t\t? isParentWidthDidChange\n\t\t\t\t: maxWidth !== parentWidth;\n\t\t\tconst isWidthChanged = maxWidth !== width;\n\n\t\t\tif ( parentWidth && ! width && isParentWidthChanged ) {\n\t\t\t\tsetMaxWidth( parentWidth - spacing );\n\t\t\t} else if ( ! parentWidth && width && isWidthChanged ) {\n\t\t\t\tsetMaxWidth( width - spacing );\n\t\t\t}\n\t\t},\n\t\t[ maxWidth, parentWidth ]\n\t);\n\n\tfunction onRemove() {\n\t\tconst { onDeleteBlock, onReplace } = props;\n\n\t\tif ( numOfButtons === 1 ) {\n\t\t\tonDeleteBlock();\n\t\t} else {\n\t\t\tonReplace( [] );\n\t\t}\n\t}\n\n\tfunction onPlaceholderTextWidth( { nativeEvent } ) {\n\t\tconst textWidth =\n\t\t\tnativeEvent.lines[ 0 ] && nativeEvent.lines[ 0 ].width;\n\n\t\tif ( textWidth && textWidth !== placeholderTextWidth ) {\n\t\t\tsetPlaceholderTextWidth( Math.min( textWidth, maxWidth ) );\n\t\t}\n\t}\n\n\tconst onSetRef = useCallback(\n\t\t( ref ) => {\n\t\t\trichTextRef.current = ref;\n\t\t},\n\t\t[ richTextRef ]\n\t);\n\n\tconst onUnstableOnFocus = useCallback( () => {\n\t\tonToggleButtonFocus( true );\n\t}, [] );\n\n\tconst onBlur = useCallback( () => {\n\t\tonSetMaxWidth();\n\t}, [] );\n\n\tfunction dismissSheet() {\n\t\tonHideLinkSettings();\n\t\tcloseGeneralSidebar();\n\t}\n\n\tfunction getLinkSettings( isCompatibleWithSettings ) {\n\t\tconst { attributes, setAttributes } = props;\n\t\treturn (\n\t\t\t<LinkSettingsNavigation\n\t\t\t\tisVisible={ isLinkSheetVisible }\n\t\t\t\turl={ attributes.url }\n\t\t\t\trel={ attributes.rel }\n\t\t\t\tlinkTarget={ attributes.linkTarget }\n\t\t\t\tonClose={ dismissSheet }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\twithBottomSheet={ ! isCompatibleWithSettings }\n\t\t\t\thasPicker\n\t\t\t\tactions={ linkSettingsActions }\n\t\t\t\toptions={\n\t\t\t\t\tisCompatibleWithSettings\n\t\t\t\t\t\t? linkSettingsOptions\n\t\t\t\t\t\t: noFocusLinkSettingOptions\n\t\t\t\t}\n\t\t\t\tshowIcon={ ! isCompatibleWithSettings }\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Render `Text` with `placeholderText` styled as a placeholder\n\t// to calculate its width which then is set as a `minWidth`\n\tfunction getPlaceholderWidth( placeholderText ) {\n\t\treturn (\n\t\t\t<Text\n\t\t\t\tstyle={ styles.placeholder }\n\t\t\t\tonTextLayout={ onPlaceholderTextWidth }\n\t\t\t>\n\t\t\t\t{ placeholderText }\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tfunction getBorderRadiusValue( currentBorderRadius, defaultBorderRadius ) {\n\t\tconst valueAndUnit = getValueAndUnit( currentBorderRadius );\n\t\tif ( Number.isInteger( parseInt( valueAndUnit?.valueToConvert ) ) ) {\n\t\t\treturn parseFloat( valueAndUnit.valueToConvert );\n\t\t}\n\t\treturn defaultBorderRadius;\n\t}\n\n\tconst {\n\t\tattributes,\n\t\tclientId,\n\t\tonReplace,\n\t\tmergeBlocks,\n\t\tsetAttributes,\n\t\tstyle,\n\t} = props;\n\tconst {\n\t\tplaceholder,\n\t\ttext,\n\t\tstyle: buttonStyle,\n\t\turl,\n\t\talign = 'center',\n\t\twidth,\n\t} = attributes;\n\tconst { paddingTop: spacing, borderWidth } = styles.defaultButton;\n\n\tif ( parentWidth === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst currentBorderRadius = buttonStyle?.border?.radius;\n\tconst borderRadiusValue = getBorderRadiusValue(\n\t\tcurrentBorderRadius,\n\t\tstyles.defaultButton.borderRadius\n\t);\n\n\tconst buttonBorderRadiusValue =\n\t\tborderRadiusUnit === 'px' || borderRadiusUnit === '%'\n\t\t\t? borderRadiusValue\n\t\t\t: Math.floor( 14 * borderRadiusValue ); // Lets assume that the font size is set to 14px; TO get a nicer preview.\n\tconst outlineBorderRadius =\n\t\tbuttonBorderRadiusValue > 0\n\t\t\t? buttonBorderRadiusValue + spacing + borderWidth\n\t\t\t: 0;\n\n\t// To achieve proper expanding and shrinking `RichText` on iOS, there is a need to set a `minWidth`\n\t// value at least on 1 when `RichText` is focused or when is not focused, but `RichText` value is\n\t// different than empty string.\n\tlet minWidth =\n\t\tisButtonFocused || ( ! isButtonFocused && text && text !== '' )\n\t\t\t? MIN_WIDTH\n\t\t\t: placeholderTextWidth;\n\tif ( width ) {\n\t\t// Set the width of the button.\n\t\tminWidth = Math.floor(\n\t\t\tmaxWidth * ( width / 100 ) - MIN_WIDTH_MARGINS[ width ]\n\t\t);\n\t}\n\t// To achieve proper expanding and shrinking `RichText` on Android, there is a need to set\n\t// a `placeholder` as an empty string when `RichText` is focused,\n\t// because `AztecView` is calculating a `minWidth` based on placeholder text.\n\tconst placeholderText =\n\t\tisButtonFocused || ( ! isButtonFocused && text && text !== '' )\n\t\t\t? ''\n\t\t\t: placeholder || __( 'Add text…' );\n\n\tconst backgroundColor = getBackgroundColor();\n\tconst textColor = getTextColor();\n\tconst isFixedWidth = !! width;\n\tconst outLineStyles = [\n\t\tstyles.outline,\n\t\t{\n\t\t\tborderRadius: outlineBorderRadius,\n\t\t\tborderColor: backgroundColor,\n\t\t},\n\t];\n\tconst textStyles = {\n\t\t...richTextStyle.richText,\n\t\tpaddingLeft: isFixedWidth ? 0 : richTextStyle.richText.paddingLeft,\n\t\tpaddingRight: isFixedWidth ? 0 : richTextStyle.richText.paddingRight,\n\t\tcolor: textColor,\n\t};\n\n\treturn (\n\t\t<View onLayout={ onLayout }>\n\t\t\t{ getPlaceholderWidth( placeholderText ) }\n\t\t\t<ColorBackground\n\t\t\t\tborderRadiusValue={ buttonBorderRadiusValue }\n\t\t\t\tbackgroundColor={ backgroundColor }\n\t\t\t\tisSelected={ isSelected }\n\t\t\t>\n\t\t\t\t{ isSelected && (\n\t\t\t\t\t<View pointerEvents=\"none\" style={ outLineStyles } />\n\t\t\t\t) }\n\t\t\t\t<RichText\n\t\t\t\t\tsetRef={ onSetRef }\n\t\t\t\t\tplaceholder={ placeholderText }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\tonChange={ onChangeText }\n\t\t\t\t\tstyle={ textStyles }\n\t\t\t\t\ttextAlign={ align }\n\t\t\t\t\tplaceholderTextColor={\n\t\t\t\t\t\tstyle?.color || styles.placeholderTextColor.color\n\t\t\t\t\t}\n\t\t\t\t\tidentifier=\"text\"\n\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\tminWidth={ minWidth } // The minimum Button size.\n\t\t\t\t\tmaxWidth={ isFixedWidth ? minWidth : maxWidth } // The width of the screen.\n\t\t\t\t\tid={ clientId }\n\t\t\t\t\tisSelected={ isButtonFocused }\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tunstableOnFocus={ onUnstableOnFocus }\n\t\t\t\t\t__unstableMobileNoFocusOnMount={ ! isSelected }\n\t\t\t\t\tselectionColor={ textColor }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonRemove={ onRemove }\n\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\tfontSize={ style?.fontSize }\n\t\t\t\t/>\n\t\t\t</ColorBackground>\n\n\t\t\t{ isSelected && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls>\n\t\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\ttitle={ __( 'Edit link' ) }\n\t\t\t\t\t\t\t\ticon={ link }\n\t\t\t\t\t\t\t\tonClick={ onShowLinkSettings }\n\t\t\t\t\t\t\t\tisActive={ url }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t{ getLinkSettings( false ) }\n\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t<PanelBody title={ __( 'Border Settings' ) }>\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Border Radius' ) }\n\t\t\t\t\t\t\t\tmin={ MIN_BORDER_RADIUS_VALUE }\n\t\t\t\t\t\t\t\tmax={ MAX_BORDER_RADIUS_VALUE }\n\t\t\t\t\t\t\t\tvalue={ borderRadiusValue }\n\t\t\t\t\t\t\t\tonChange={ onChangeBorderRadius }\n\t\t\t\t\t\t\t\tonUnitChange={ onChangeBorderRadiusUnit }\n\t\t\t\t\t\t\t\tunit={ borderRadiusUnit }\n\t\t\t\t\t\t\t\tunits={ filterUnitsWithSettings(\n\t\t\t\t\t\t\t\t\t[ 'px', 'em', 'rem' ],\n\t\t\t\t\t\t\t\t\tCSS_UNITS\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t<WidthPanel\n\t\t\t\t\t\t\tselectedWidth={ width }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PanelBody title={ __( 'Link Settings' ) }>\n\t\t\t\t\t\t\t{ getLinkSettings( true ) }\n\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t</InspectorControls>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</View>\n\t);\n}\n\nexport default ButtonEdit;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["View","AccessibilityInfo","Platform","Text","useCallback","useEffect","useState","useRef","useSelect","useDispatch","__","_x","RichText","InspectorControls","BlockControls","store","blockEditorStore","getColorObjectByAttributeValues","getGradientValueBySlug","__experimentalGetColorClassesAndStyles","getColorClassesAndStyles","PanelBody","ToolbarGroup","ToolbarButton","LinkSettingsNavigation","UnitControl","getValueAndUnit","BottomSheetSelectControl","CSS_UNITS","filterUnitsWithSettings","useMobileGlobalStylesColors","link","editPostStore","richTextStyle","styles","ColorBackground","MIN_BORDER_RADIUS_VALUE","MAX_BORDER_RADIUS_VALUE","INITIAL_MAX_WIDTH","MIN_WIDTH","MIN_WIDTH_MARGINS","button75","marginLeft","button50","button25","WidthPanel","selectedWidth","setAttributes","handleChange","newWidth","width","undefined","options","value","label","createElement","title","onChange","ButtonEdit","props","isSelected","parentWidth","initialBorderRadius","attributes","style","border","radius","valueUnit","editorSidebarOpened","numOfButtons","select","isEditorSidebarOpened","getBlockCount","getBlockRootClientId","parentId","clientId","blockCount","currentIsEditorSidebarOpened","closeGeneralSidebar","maxWidth","setMaxWidth","isLinkSheetVisible","setIsLinkSheetVisible","isButtonFocused","setIsButtonFocused","placeholderTextWidth","setPlaceholderTextWidth","borderRadiusUnit","setBorderRadiusUnit","richTextRef","colors","gradients","onToggleButtonFocus","onSetMaxWidth","richText","current","OS","blur","isScreenReaderEnabled","then","enabled","focus","linkSettingsActions","onPress","onClearSettings","linkSettingsOptions","url","placeholder","autoFocus","autoFill","openInNewTab","linkRel","noFocusLinkSettingOptions","getBackgroundColor","backgroundColor","gradient","gradientValue","colorProps","colorObject","color","background","defaultButton","getTextColor","textColor","onChangeText","text","onChangeBorderRadius","newRadius","newStyle","getNewStyle","onChangeBorderRadiusUnit","newRadiusUnit","newBorderRadius","getBorderRadiusValue","radiusUnit","onShowLinkSettings","onHideLinkSettings","rel","linkTarget","onLayout","nativeEvent","layout","isParentWidthDidChange","marginRight","spacing","isParentWidthChanged","isWidthChanged","onRemove","onDeleteBlock","onReplace","onPlaceholderTextWidth","textWidth","lines","Math","min","onSetRef","ref","onUnstableOnFocus","onBlur","dismissSheet","getLinkSettings","isCompatibleWithSettings","isVisible","onClose","withBottomSheet","hasPicker","actions","showIcon","getPlaceholderWidth","placeholderText","onTextLayout","currentBorderRadius","defaultBorderRadius","valueAndUnit","Number","isInteger","parseInt","valueToConvert","parseFloat","mergeBlocks","buttonStyle","align","paddingTop","borderWidth","borderRadiusValue","borderRadius","buttonBorderRadiusValue","floor","outlineBorderRadius","minWidth","isFixedWidth","outLineStyles","outline","borderColor","textStyles","paddingLeft","paddingRight","pointerEvents","textAlign","placeholderTextColor","identifier","tagName","id","withoutInteractiveFormatting","unstableOnFocus","__unstableMobileNoFocusOnMount","selectionColor","onMerge","fontSize","Fragment","icon","onClick","isActive","max","onUnitChange","unit","units"],"sources":["@wordpress/block-library/src/button/edit.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View, AccessibilityInfo, Platform, Text } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useState, useRef } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tRichText,\n\tInspectorControls,\n\tBlockControls,\n\tstore as blockEditorStore,\n\tgetColorObjectByAttributeValues,\n\tgetGradientValueBySlug,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tToolbarGroup,\n\tToolbarButton,\n\tLinkSettingsNavigation,\n\tUnitControl,\n\tgetValueAndUnit,\n\tBottomSheetSelectControl,\n\tCSS_UNITS,\n\tfilterUnitsWithSettings,\n\tuseMobileGlobalStylesColors,\n} from '@wordpress/components';\nimport { link } from '@wordpress/icons';\n// eslint-disable-next-line no-restricted-imports\nimport { store as editPostStore } from '@wordpress/edit-post';\n\n/**\n * Internal dependencies\n */\nimport richTextStyle from './rich-text.scss';\nimport styles from './editor.scss';\nimport ColorBackground from './color-background';\n\nconst MIN_BORDER_RADIUS_VALUE = 0;\nconst MAX_BORDER_RADIUS_VALUE = 50;\nconst INITIAL_MAX_WIDTH = 108;\nconst MIN_WIDTH = 40;\n// Map of the percentage width to pixel subtraction that make the buttons fit nicely into columns.\nconst MIN_WIDTH_MARGINS = {\n\t100: 0,\n\t75: styles.button75?.marginLeft,\n\t50: styles.button50?.marginLeft,\n\t25: styles.button25?.marginLeft,\n};\n\nfunction WidthPanel( { selectedWidth, setAttributes } ) {\n\tfunction handleChange( newWidth ) {\n\t\t// Check if we are toggling the width off\n\t\tlet width = selectedWidth === newWidth ? undefined : newWidth;\n\t\tif ( newWidth === 'auto' ) {\n\t\t\twidth = undefined;\n\t\t}\n\t\t// Update attributes.\n\t\tsetAttributes( { width } );\n\t}\n\n\tconst options = [\n\t\t{ value: 'auto', label: __( 'Auto' ) },\n\t\t{ value: 25, label: '25%' },\n\t\t{ value: 50, label: '50%' },\n\t\t{ value: 75, label: '75%' },\n\t\t{ value: 100, label: '100%' },\n\t];\n\n\tif ( ! selectedWidth ) {\n\t\tselectedWidth = 'auto';\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Width Settings' ) }>\n\t\t\t<BottomSheetSelectControl\n\t\t\t\tlabel={ __( 'Button width' ) }\n\t\t\t\tvalue={ selectedWidth }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\toptions={ options }\n\t\t\t/>\n\t\t</PanelBody>\n\t);\n}\n\nfunction ButtonEdit( props ) {\n\tconst { isSelected, parentWidth } = props;\n\tconst initialBorderRadius = props?.attributes?.style?.border?.radius;\n\tconst { valueUnit = 'px' } = getValueAndUnit( initialBorderRadius ) || {};\n\n\tconst { editorSidebarOpened, numOfButtons } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isEditorSidebarOpened } = select( editPostStore );\n\t\t\tconst { getBlockCount, getBlockRootClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst parentId = getBlockRootClientId( clientId );\n\t\t\tconst blockCount = getBlockCount( parentId );\n\t\t\tconst currentIsEditorSidebarOpened = isEditorSidebarOpened();\n\n\t\t\treturn {\n\t\t\t\teditorSidebarOpened: isSelected && currentIsEditorSidebarOpened,\n\t\t\t\tnumOfButtons: blockCount,\n\t\t\t};\n\t\t},\n\t\t[ clientId, isSelected ]\n\t);\n\n\tconst { closeGeneralSidebar } = useDispatch( editPostStore );\n\tconst [ maxWidth, setMaxWidth ] = useState( INITIAL_MAX_WIDTH );\n\tconst [ isLinkSheetVisible, setIsLinkSheetVisible ] = useState( false );\n\tconst [ isButtonFocused, setIsButtonFocused ] = useState( true );\n\tconst [ placeholderTextWidth, setPlaceholderTextWidth ] = useState( 0 );\n\tconst [ borderRadiusUnit, setBorderRadiusUnit ] = useState( valueUnit );\n\n\tconst richTextRef = useRef();\n\tconst colors = useMobileGlobalStylesColors();\n\tconst gradients = useMobileGlobalStylesColors( 'gradients' );\n\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\tonToggleButtonFocus( true );\n\t\t}\n\t}, [ isSelected ] );\n\n\tuseEffect( () => {\n\t\tonSetMaxWidth( null, true );\n\t}, [ parentWidth ] );\n\n\tuseEffect( () => {\n\t\t// Blur `RichText` on Android when link settings sheet or button settings sheet is opened,\n\t\t// to avoid flashing caret after closing one of them\n\t\tconst richText = richTextRef?.current;\n\t\tif ( Platform.OS === 'android' && richText ) {\n\t\t\tif ( editorSidebarOpened || isLinkSheetVisible ) {\n\t\t\t\trichText.blur();\n\t\t\t\tonToggleButtonFocus( false );\n\t\t\t} else {\n\t\t\t\tonToggleButtonFocus( true );\n\t\t\t}\n\t\t}\n\t}, [ editorSidebarOpened, isLinkSheetVisible ] );\n\n\tuseEffect( () => {\n\t\tif ( richTextRef?.current ) {\n\t\t\tif ( ! isSelected && isButtonFocused ) {\n\t\t\t\tonToggleButtonFocus( false );\n\t\t\t}\n\n\t\t\tif ( isSelected && ! isButtonFocused ) {\n\t\t\t\tAccessibilityInfo.isScreenReaderEnabled().then( ( enabled ) => {\n\t\t\t\t\tif ( enabled ) {\n\t\t\t\t\t\tonToggleButtonFocus( true );\n\t\t\t\t\t\trichTextRef?.current.focus();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}, [ isSelected, isButtonFocused ] );\n\n\tconst linkSettingsActions = [\n\t\t{\n\t\t\tlabel: __( 'Remove link' ),\n\t\t\tonPress: onClearSettings,\n\t\t},\n\t];\n\n\tconst linkSettingsOptions = {\n\t\turl: {\n\t\t\tlabel: __( 'Button Link URL' ),\n\t\t\tplaceholder: __( 'Add URL' ),\n\t\t\tautoFocus: true,\n\t\t\tautoFill: false,\n\t\t},\n\t\topenInNewTab: {\n\t\t\tlabel: __( 'Open in new tab' ),\n\t\t},\n\t\tlinkRel: {\n\t\t\tlabel: __( 'Link Rel' ),\n\t\t\tplaceholder: _x( 'None', 'Link rel attribute value placeholder' ),\n\t\t},\n\t};\n\n\tconst noFocusLinkSettingOptions = {\n\t\t...linkSettingsOptions,\n\t\turl: {\n\t\t\t...linkSettingsOptions.url,\n\t\t\tautoFocus: false,\n\t\t},\n\t};\n\n\tfunction getBackgroundColor() {\n\t\tconst { attributes, style } = props;\n\t\tconst { backgroundColor, gradient } = attributes;\n\n\t\t// Return named gradient value if available.\n\t\tconst gradientValue = getGradientValueBySlug( gradients, gradient );\n\n\t\tif ( gradientValue ) {\n\t\t\treturn gradientValue;\n\t\t}\n\n\t\tconst colorProps = getColorClassesAndStyles( attributes );\n\n\t\t// Retrieve named color object to force inline styles for themes that\n\t\t// do not load their color stylesheets in the editor.\n\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\tcolors,\n\t\t\tbackgroundColor\n\t\t);\n\n\t\treturn (\n\t\t\tcolorObject?.color ||\n\t\t\tcolorProps.style?.backgroundColor ||\n\t\t\tcolorProps.style?.background ||\n\t\t\tstyle?.backgroundColor ||\n\t\t\tstyles.defaultButton.backgroundColor\n\t\t);\n\t}\n\n\tfunction getTextColor() {\n\t\tconst { attributes, style } = props;\n\t\tconst colorProps = getColorClassesAndStyles( attributes );\n\n\t\t// Retrieve named color object to force inline styles for themes that\n\t\t// do not load their color stylesheets in the editor.\n\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\tcolors,\n\t\t\tattributes.textColor\n\t\t);\n\n\t\treturn (\n\t\t\tcolorObject?.color ||\n\t\t\tcolorProps.style?.color ||\n\t\t\tstyle?.color ||\n\t\t\tstyles.defaultButton.color\n\t\t);\n\t}\n\n\tfunction onChangeText( value ) {\n\t\tconst { setAttributes } = props;\n\t\tsetAttributes( { text: value } );\n\t}\n\n\tfunction onChangeBorderRadius( newRadius ) {\n\t\tconst { setAttributes, attributes } = props;\n\t\tconst { style } = attributes;\n\t\tconst newStyle = getNewStyle( style, newRadius, borderRadiusUnit );\n\n\t\tsetAttributes( { style: newStyle } );\n\t}\n\n\tfunction onChangeBorderRadiusUnit( newRadiusUnit ) {\n\t\tconst { setAttributes, attributes } = props;\n\t\tconst { style } = attributes;\n\t\tconst newBorderRadius = getBorderRadiusValue(\n\t\t\tattributes?.style?.border?.radius\n\t\t);\n\t\tconst newStyle = getNewStyle( style, newBorderRadius, newRadiusUnit );\n\t\tsetAttributes( { style: newStyle } );\n\t\tsetBorderRadiusUnit( newRadiusUnit );\n\t}\n\n\tfunction getNewStyle( style, radius, radiusUnit ) {\n\t\treturn {\n\t\t\t...style,\n\t\t\tborder: {\n\t\t\t\t...style?.border,\n\t\t\t\tradius: `${ radius }${ radiusUnit }`, // Store the value with the unit so that it works as expected.\n\t\t\t},\n\t\t};\n\t}\n\n\tfunction onShowLinkSettings() {\n\t\tsetIsLinkSheetVisible( true );\n\t}\n\n\tfunction onHideLinkSettings() {\n\t\tsetIsLinkSheetVisible( false );\n\t}\n\n\tfunction onToggleButtonFocus( value ) {\n\t\tif ( value !== isButtonFocused ) {\n\t\t\tsetIsButtonFocused( value );\n\t\t}\n\t}\n\n\tfunction onClearSettings() {\n\t\tconst { setAttributes } = props;\n\n\t\tsetAttributes( {\n\t\t\turl: '',\n\t\t\trel: '',\n\t\t\tlinkTarget: '',\n\t\t} );\n\n\t\tonHideLinkSettings();\n\t}\n\n\tfunction onLayout( { nativeEvent } ) {\n\t\tconst { width } = nativeEvent.layout;\n\t\tonSetMaxWidth( width );\n\t}\n\n\tconst onSetMaxWidth = useCallback(\n\t\t( width, isParentWidthDidChange = false ) => {\n\t\t\tconst { marginRight: spacing } = styles.defaultButton;\n\n\t\t\tconst isParentWidthChanged = isParentWidthDidChange\n\t\t\t\t? isParentWidthDidChange\n\t\t\t\t: maxWidth !== parentWidth;\n\t\t\tconst isWidthChanged = maxWidth !== width;\n\n\t\t\tif ( parentWidth && ! width && isParentWidthChanged ) {\n\t\t\t\tsetMaxWidth( parentWidth - spacing );\n\t\t\t} else if ( ! parentWidth && width && isWidthChanged ) {\n\t\t\t\tsetMaxWidth( width - spacing );\n\t\t\t}\n\t\t},\n\t\t[ maxWidth, parentWidth ]\n\t);\n\n\tfunction onRemove() {\n\t\tconst { onDeleteBlock, onReplace } = props;\n\n\t\tif ( numOfButtons === 1 ) {\n\t\t\tonDeleteBlock();\n\t\t} else {\n\t\t\tonReplace( [] );\n\t\t}\n\t}\n\n\tfunction onPlaceholderTextWidth( { nativeEvent } ) {\n\t\tconst textWidth =\n\t\t\tnativeEvent.lines[ 0 ] && nativeEvent.lines[ 0 ].width;\n\n\t\tif ( textWidth && textWidth !== placeholderTextWidth ) {\n\t\t\tsetPlaceholderTextWidth( Math.min( textWidth, maxWidth ) );\n\t\t}\n\t}\n\n\tconst onSetRef = useCallback(\n\t\t( ref ) => {\n\t\t\trichTextRef.current = ref;\n\t\t},\n\t\t[ richTextRef ]\n\t);\n\n\tconst onUnstableOnFocus = useCallback( () => {\n\t\tonToggleButtonFocus( true );\n\t}, [] );\n\n\tconst onBlur = useCallback( () => {\n\t\tonSetMaxWidth();\n\t}, [] );\n\n\tfunction dismissSheet() {\n\t\tonHideLinkSettings();\n\t\tcloseGeneralSidebar();\n\t}\n\n\tfunction getLinkSettings( isCompatibleWithSettings ) {\n\t\tconst { attributes, setAttributes } = props;\n\t\treturn (\n\t\t\t<LinkSettingsNavigation\n\t\t\t\tisVisible={ isLinkSheetVisible }\n\t\t\t\turl={ attributes.url }\n\t\t\t\trel={ attributes.rel }\n\t\t\t\tlinkTarget={ attributes.linkTarget }\n\t\t\t\tonClose={ dismissSheet }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\twithBottomSheet={ ! isCompatibleWithSettings }\n\t\t\t\thasPicker\n\t\t\t\tactions={ linkSettingsActions }\n\t\t\t\toptions={\n\t\t\t\t\tisCompatibleWithSettings\n\t\t\t\t\t\t? linkSettingsOptions\n\t\t\t\t\t\t: noFocusLinkSettingOptions\n\t\t\t\t}\n\t\t\t\tshowIcon={ ! isCompatibleWithSettings }\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Render `Text` with `placeholderText` styled as a placeholder\n\t// to calculate its width which then is set as a `minWidth`\n\tfunction getPlaceholderWidth( placeholderText ) {\n\t\treturn (\n\t\t\t<Text\n\t\t\t\tstyle={ styles.placeholder }\n\t\t\t\tonTextLayout={ onPlaceholderTextWidth }\n\t\t\t>\n\t\t\t\t{ placeholderText }\n\t\t\t</Text>\n\t\t);\n\t}\n\n\tfunction getBorderRadiusValue( currentBorderRadius, defaultBorderRadius ) {\n\t\tconst valueAndUnit = getValueAndUnit( currentBorderRadius );\n\t\tif ( Number.isInteger( parseInt( valueAndUnit?.valueToConvert ) ) ) {\n\t\t\treturn parseFloat( valueAndUnit.valueToConvert );\n\t\t}\n\t\treturn defaultBorderRadius;\n\t}\n\n\tconst {\n\t\tattributes,\n\t\tclientId,\n\t\tonReplace,\n\t\tmergeBlocks,\n\t\tsetAttributes,\n\t\tstyle,\n\t} = props;\n\tconst {\n\t\tplaceholder,\n\t\ttext,\n\t\tstyle: buttonStyle,\n\t\turl,\n\t\talign = 'center',\n\t\twidth,\n\t} = attributes;\n\tconst { paddingTop: spacing, borderWidth } = styles.defaultButton;\n\n\tif ( parentWidth === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst currentBorderRadius = buttonStyle?.border?.radius;\n\tconst borderRadiusValue = getBorderRadiusValue(\n\t\tcurrentBorderRadius,\n\t\tstyles.defaultButton.borderRadius\n\t);\n\n\tconst buttonBorderRadiusValue =\n\t\tborderRadiusUnit === 'px' || borderRadiusUnit === '%'\n\t\t\t? borderRadiusValue\n\t\t\t: Math.floor( 14 * borderRadiusValue ); // Lets assume that the font size is set to 14px; TO get a nicer preview.\n\tconst outlineBorderRadius =\n\t\tbuttonBorderRadiusValue > 0\n\t\t\t? buttonBorderRadiusValue + spacing + borderWidth\n\t\t\t: 0;\n\n\t// To achieve proper expanding and shrinking `RichText` on iOS, there is a need to set a `minWidth`\n\t// value at least on 1 when `RichText` is focused or when is not focused, but `RichText` value is\n\t// different than empty string.\n\tlet minWidth =\n\t\tisButtonFocused || ( ! isButtonFocused && text && text !== '' )\n\t\t\t? MIN_WIDTH\n\t\t\t: placeholderTextWidth;\n\tif ( width ) {\n\t\t// Set the width of the button.\n\t\tminWidth = Math.floor(\n\t\t\tmaxWidth * ( width / 100 ) - MIN_WIDTH_MARGINS[ width ]\n\t\t);\n\t}\n\t// To achieve proper expanding and shrinking `RichText` on Android, there is a need to set\n\t// a `placeholder` as an empty string when `RichText` is focused,\n\t// because `AztecView` is calculating a `minWidth` based on placeholder text.\n\tconst placeholderText =\n\t\tisButtonFocused || ( ! isButtonFocused && text && text !== '' )\n\t\t\t? ''\n\t\t\t: placeholder || __( 'Add text…' );\n\n\tconst backgroundColor = getBackgroundColor();\n\tconst textColor = getTextColor();\n\tconst isFixedWidth = !! width;\n\tconst outLineStyles = [\n\t\tstyles.outline,\n\t\t{\n\t\t\tborderRadius: outlineBorderRadius,\n\t\t\tborderColor: backgroundColor,\n\t\t},\n\t];\n\tconst textStyles = {\n\t\t...richTextStyle.richText,\n\t\tpaddingLeft: isFixedWidth ? 0 : richTextStyle.richText.paddingLeft,\n\t\tpaddingRight: isFixedWidth ? 0 : richTextStyle.richText.paddingRight,\n\t\tcolor: textColor,\n\t};\n\n\treturn (\n\t\t<View onLayout={ onLayout }>\n\t\t\t{ getPlaceholderWidth( placeholderText ) }\n\t\t\t<ColorBackground\n\t\t\t\tborderRadiusValue={ buttonBorderRadiusValue }\n\t\t\t\tbackgroundColor={ backgroundColor }\n\t\t\t\tisSelected={ isSelected }\n\t\t\t>\n\t\t\t\t{ isSelected && (\n\t\t\t\t\t<View pointerEvents=\"none\" style={ outLineStyles } />\n\t\t\t\t) }\n\t\t\t\t<RichText\n\t\t\t\t\tref={ onSetRef }\n\t\t\t\t\tplaceholder={ placeholderText }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\tonChange={ onChangeText }\n\t\t\t\t\tstyle={ textStyles }\n\t\t\t\t\ttextAlign={ align }\n\t\t\t\t\tplaceholderTextColor={\n\t\t\t\t\t\tstyle?.color || styles.placeholderTextColor.color\n\t\t\t\t\t}\n\t\t\t\t\tidentifier=\"text\"\n\t\t\t\t\ttagName=\"p\"\n\t\t\t\t\tminWidth={ minWidth } // The minimum Button size.\n\t\t\t\t\tmaxWidth={ isFixedWidth ? minWidth : maxWidth } // The width of the screen.\n\t\t\t\t\tid={ clientId }\n\t\t\t\t\tisSelected={ isButtonFocused }\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tunstableOnFocus={ onUnstableOnFocus }\n\t\t\t\t\t__unstableMobileNoFocusOnMount={ ! isSelected }\n\t\t\t\t\tselectionColor={ textColor }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonRemove={ onRemove }\n\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\tfontSize={ style?.fontSize }\n\t\t\t\t/>\n\t\t\t</ColorBackground>\n\n\t\t\t{ isSelected && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls>\n\t\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\ttitle={ __( 'Edit link' ) }\n\t\t\t\t\t\t\t\ticon={ link }\n\t\t\t\t\t\t\t\tonClick={ onShowLinkSettings }\n\t\t\t\t\t\t\t\tisActive={ url }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t{ getLinkSettings( false ) }\n\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t<PanelBody title={ __( 'Border Settings' ) }>\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Border Radius' ) }\n\t\t\t\t\t\t\t\tmin={ MIN_BORDER_RADIUS_VALUE }\n\t\t\t\t\t\t\t\tmax={ MAX_BORDER_RADIUS_VALUE }\n\t\t\t\t\t\t\t\tvalue={ borderRadiusValue }\n\t\t\t\t\t\t\t\tonChange={ onChangeBorderRadius }\n\t\t\t\t\t\t\t\tonUnitChange={ onChangeBorderRadiusUnit }\n\t\t\t\t\t\t\t\tunit={ borderRadiusUnit }\n\t\t\t\t\t\t\t\tunits={ filterUnitsWithSettings(\n\t\t\t\t\t\t\t\t\t[ 'px', 'em', 'rem' ],\n\t\t\t\t\t\t\t\t\tCSS_UNITS\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t<WidthPanel\n\t\t\t\t\t\t\tselectedWidth={ width }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PanelBody title={ __( 'Link Settings' ) }>\n\t\t\t\t\t\t\t{ getLinkSettings( true ) }\n\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t</InspectorControls>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</View>\n\t);\n}\n\nexport default ButtonEdit;\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import classnames from 'classnames';
|
|
|
7
7
|
/**
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { isBlobURL } from '@wordpress/blob';
|
|
11
11
|
import { store as blocksStore } from '@wordpress/blocks';
|
|
12
12
|
import { Placeholder } from '@wordpress/components';
|
|
13
13
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
@@ -21,6 +21,7 @@ import { store as noticesStore } from '@wordpress/notices';
|
|
|
21
21
|
* Internal dependencies
|
|
22
22
|
*/
|
|
23
23
|
import { unlock } from '../lock-unlock';
|
|
24
|
+
import { useUploadMediaFromBlobURL } from '../utils/hooks';
|
|
24
25
|
import Image from './image';
|
|
25
26
|
|
|
26
27
|
/**
|
|
@@ -91,7 +92,9 @@ export function ImageEdit({
|
|
|
91
92
|
align,
|
|
92
93
|
metadata
|
|
93
94
|
} = attributes;
|
|
94
|
-
const [temporaryURL, setTemporaryURL] = useState()
|
|
95
|
+
const [temporaryURL, setTemporaryURL] = useState(() => {
|
|
96
|
+
return isTemporaryImage(id, url) ? url : undefined;
|
|
97
|
+
});
|
|
95
98
|
const altRef = useRef();
|
|
96
99
|
useEffect(() => {
|
|
97
100
|
altRef.current = alt;
|
|
@@ -236,44 +239,12 @@ export function ImageEdit({
|
|
|
236
239
|
});
|
|
237
240
|
}
|
|
238
241
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
}
|
|
246
|
-
const file = getBlobByURL(url);
|
|
247
|
-
if (file) {
|
|
248
|
-
const {
|
|
249
|
-
mediaUpload
|
|
250
|
-
} = getSettings();
|
|
251
|
-
if (!mediaUpload) {
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
mediaUpload({
|
|
255
|
-
filesList: [file],
|
|
256
|
-
onFileChange: ([img]) => {
|
|
257
|
-
onSelectImage(img);
|
|
258
|
-
},
|
|
259
|
-
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
260
|
-
onError: message => {
|
|
261
|
-
isTemp = false;
|
|
262
|
-
onUploadError(message);
|
|
263
|
-
}
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
}, []);
|
|
267
|
-
|
|
268
|
-
// If an image is temporary, revoke the Blob url when it is uploaded (and is
|
|
269
|
-
// no longer temporary).
|
|
270
|
-
useEffect(() => {
|
|
271
|
-
if (isTemp) {
|
|
272
|
-
setTemporaryURL(url);
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
revokeBlobURL(temporaryURL);
|
|
276
|
-
}, [isTemp, url]);
|
|
242
|
+
useUploadMediaFromBlobURL({
|
|
243
|
+
url,
|
|
244
|
+
allowedTypes: ALLOWED_MEDIA_TYPES,
|
|
245
|
+
onChange: onSelectImage,
|
|
246
|
+
onError: onUploadError
|
|
247
|
+
});
|
|
277
248
|
const isExternal = isExternalImage(id, url);
|
|
278
249
|
const src = isExternal ? url : undefined;
|
|
279
250
|
const mediaPreview = !!url && createElement("img", {
|