@wordpress/block-library
Version:
Block library for the WordPress editor.
8 lines (7 loc) • 5.23 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/query/edit/pattern-selection.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useState, useMemo } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { Modal, SearchControl } from '@wordpress/components';\nimport {\n\tBlockContextProvider,\n\tstore as blockEditorStore,\n\t__experimentalBlockPatternsList as BlockPatternsList,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseBlockNameForPatterns,\n\tgetTransformedBlocksFromPattern,\n\tusePatterns,\n} from '../utils';\nimport { searchPatterns } from '../../utils/search-patterns';\n\nexport function PatternSelectionModal( {\n\tclientId,\n\tattributes,\n\tsetIsPatternSelectionModalOpen,\n} ) {\n\treturn (\n\t\t<Modal\n\t\t\toverlayClassName=\"block-library-query-pattern__selection-modal\"\n\t\t\ttitle={ __( 'Choose a pattern' ) }\n\t\t\tonRequestClose={ () => setIsPatternSelectionModalOpen( false ) }\n\t\t\tisFullScreen\n\t\t>\n\t\t\t<PatternSelection clientId={ clientId } attributes={ attributes } />\n\t\t</Modal>\n\t);\n}\n\nexport function useBlockPatterns( clientId, attributes ) {\n\tconst blockNameForPatterns = useBlockNameForPatterns(\n\t\tclientId,\n\t\tattributes\n\t);\n\tconst allPatterns = usePatterns( clientId, blockNameForPatterns );\n\t// Filter out any patterns that don't have Query as their root block\n\t// so that a Query block is always replaced by another Query block.\n\tconst rootBlockPatterns = useMemo( () => {\n\t\treturn allPatterns.filter( ( pattern ) => {\n\t\t\treturn pattern.blocks?.[ 0 ]?.name === 'core/query';\n\t\t} );\n\t}, [ allPatterns ] );\n\n\treturn rootBlockPatterns;\n}\n\nexport default function PatternSelection( {\n\tclientId,\n\tattributes,\n\tshowTitlesAsTooltip = false,\n\tshowSearch = true,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { replaceBlock, selectBlock } = useDispatch( blockEditorStore );\n\tconst blockPatterns = useBlockPatterns( clientId, attributes );\n\t/*\n\t * When we preview Query Loop blocks we should prefer the current\n\t * block's postType, which is passed through block context.\n\t */\n\tconst blockPreviewContext = useMemo(\n\t\t() => ( {\n\t\t\tpreviewPostType: attributes.query.postType,\n\t\t} ),\n\t\t[ attributes.query.postType ]\n\t);\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\n\tconst onBlockPatternSelect = ( pattern, blocks ) => {\n\t\tconst { newBlocks, queryClientIds } = getTransformedBlocksFromPattern(\n\t\t\tblocks,\n\t\t\tattributes\n\t\t);\n\t\treplaceBlock( clientId, newBlocks );\n\t\tif ( queryClientIds[ 0 ] ) {\n\t\t\tselectBlock( queryClientIds[ 0 ] );\n\t\t}\n\t};\n\treturn (\n\t\t<div className=\"block-library-query-pattern__selection-content\">\n\t\t\t{ showSearch && (\n\t\t\t\t<div className=\"block-library-query-pattern__selection-search\">\n\t\t\t\t\t<SearchControl\n\t\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<BlockContextProvider value={ blockPreviewContext }>\n\t\t\t\t<BlockPatternsList\n\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\tonClickPattern={ onBlockPatternSelect }\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t/>\n\t\t\t</BlockContextProvider>\n\t\t</div>\n\t);\n}\n"],
"mappings": ";AAGA,SAAS,UAAU,eAAe;AAClC,SAAS,mBAAmB;AAC5B,SAAS,OAAO,qBAAqB;AACrC;AAAA,EACC;AAAA,EACA,SAAS;AAAA,EACT,mCAAmC;AAAA,OAC7B;AACP,SAAS,UAAU;AAKnB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,sBAAsB;AAc5B,cAwDD,YAxDC;AAZI,SAAS,sBAAuB;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,SACC;AAAA,IAAC;AAAA;AAAA,MACA,kBAAiB;AAAA,MACjB,OAAQ,GAAI,kBAAmB;AAAA,MAC/B,gBAAiB,MAAM,+BAAgC,KAAM;AAAA,MAC7D,cAAY;AAAA,MAEZ,8BAAC,oBAAiB,UAAsB,YAA0B;AAAA;AAAA,EACnE;AAEF;AAEO,SAAS,iBAAkB,UAAU,YAAa;AACxD,QAAM,uBAAuB;AAAA,IAC5B;AAAA,IACA;AAAA,EACD;AACA,QAAM,cAAc,YAAa,UAAU,oBAAqB;AAGhE,QAAM,oBAAoB,QAAS,MAAM;AACxC,WAAO,YAAY,OAAQ,CAAE,YAAa;AACzC,aAAO,QAAQ,SAAU,CAAE,GAAG,SAAS;AAAA,IACxC,CAAE;AAAA,EACH,GAAG,CAAE,WAAY,CAAE;AAEnB,SAAO;AACR;AAEe,SAAR,iBAAmC;AAAA,EACzC;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB,aAAa;AACd,GAAI;AACH,QAAM,CAAE,aAAa,cAAe,IAAI,SAAU,EAAG;AACrD,QAAM,EAAE,cAAc,YAAY,IAAI,YAAa,gBAAiB;AACpE,QAAM,gBAAgB,iBAAkB,UAAU,UAAW;AAK7D,QAAM,sBAAsB;AAAA,IAC3B,OAAQ;AAAA,MACP,iBAAiB,WAAW,MAAM;AAAA,IACnC;AAAA,IACA,CAAE,WAAW,MAAM,QAAS;AAAA,EAC7B;AACA,QAAM,wBAAwB,QAAS,MAAM;AAC5C,WAAO,eAAgB,eAAe,WAAY;AAAA,EACnD,GAAG,CAAE,eAAe,WAAY,CAAE;AAElC,QAAM,uBAAuB,CAAE,SAAS,WAAY;AACnD,UAAM,EAAE,WAAW,eAAe,IAAI;AAAA,MACrC;AAAA,MACA;AAAA,IACD;AACA,iBAAc,UAAU,SAAU;AAClC,QAAK,eAAgB,CAAE,GAAI;AAC1B,kBAAa,eAAgB,CAAE,CAAE;AAAA,IAClC;AAAA,EACD;AACA,SACC,qBAAC,SAAI,WAAU,kDACZ;AAAA,kBACD,oBAAC,SAAI,WAAU,iDACd;AAAA,MAAC;AAAA;AAAA,QACA,UAAW;AAAA,QACX,OAAQ;AAAA,QACR,OAAQ,GAAI,QAAS;AAAA,QACrB,aAAc,GAAI,QAAS;AAAA;AAAA,IAC5B,GACD;AAAA,IAED,oBAAC,wBAAqB,OAAQ,qBAC7B;AAAA,MAAC;AAAA;AAAA,QACA,eAAgB;AAAA,QAChB,gBAAiB;AAAA,QACjB;AAAA;AAAA,IACD,GACD;AAAA,KACD;AAEF;",
"names": []
}